今、話題の人工知能(AI)などで人気のPython。初心者に優しいとか言われていますが、全然優しくない! という事を、つらつら、愚痴っていきます

243.プログラム開発の心得

»

初回:2022/2/9

 皆さんは、プログラムの開発時にどのような事を重要視されているのでしょうか?

P子「重要視って、品質とか?」(※1

 色々あると思います。

 最新機能を使用するとか、ソースコードをきれいに書くとか、ドキュメントをきちんと残すとか、そういう基本的な事から、命名規約に準拠するとか、再利用性を考慮するとか、カプセル化を意識するとか...

P子「ある意味、それらも基本的な事でしょ」

 それらも大切ですが、さらに上位概念である『心得』を考えたいと思います。

1.コーディングを始める前に

 今からコーディングを初めるとします。その前に心の中で再確認しなければならないことがあります。それが心得です。

P子「もったい付けるときは、大抵くだらない話なのよね」

 何を再確認するかというと『自分以外の周りは、すべて信用できない』という事を思い返してください。

P子「何それ?プログラミングと関係あるの?」

 これは、そのシステムを利用するユーザーや、あなたの作ったモジュールを再利用する仲間のプログラマなど、すべての人を信用してはいけないという事です。

P子「だから、どういう事?」

 例えば、利用するユーザーはあなたの作ったシステムをどんな使い方をするか分かりません。画面の登録時の整合性チェックは当然必要です。処理が遅いと、ボタンを何度も押すでしょうから、二度押し防止対策も必要でしょうし、登録途中でいきなり画面を閉じたり同じ画面を何枚も開いて登録したりすることもあるでしょう。ファイルを取り込んだり出力する場合も、どんな文字コードで来るかも区切り文字がどうなっているかも全く不明です。さらに、何度も同じファイルを取り込んだり、一度出力したデータを何度も出力したい場合もあるでしょう。

 モジュールを再利用する人も、どんな使い方をするか分かりません。publicメソッドなら好きな所から呼び出して好きにデータを設定するでしょう。nullを設定するかもしれませんし、配列を設定しておいて、設定元で中身を書き換えたり削除したりするかもしれません。今なら、マルチタスクで使いまわすかもしれません。つまり、何をするか分からないという事です。

 そういう信用できない人たちが、あなたが作ったプログラムを好き勝手に使うかもしれないという事を前提に、コーディングをすべきだと思います。

P子「自分以外は、みんな信用できないのね」

2.プログラム開発の心得

 つまり、コーディングを行うときには、自分の作ったプログラムが『どんな使われ方をしてもぶっ壊れない』作りを心がけるべきだというのが、今回の主張です。

P子「無駄が多くならないの?」

 必要な機能のコーディング量が『2』だとすると、チェックやガード、エラー時処理などは『5』くらいのコーディング量を確保しておいた方が良いでしょう。残りの『3』はドキュメント(コメント)です。

P子「コメントなしでも判るコーディングにしなくていいの?」

 それは基本事項ですが『何をしているか』を記述するのではなく『何をしたいのか』『なぜ必要なのか』を書きます。

P子「なぜ?」

 『何をしているか』は、コーディングから紐解くことができますが『なぜ必要なのか』は、コーディングを見ても判りません。システムを再構築する場合、そのコーディング自体が不要になるかもしれませんし、別の手段に置き換えることになるかもしれません。

P子「そういうことは、設計仕様書に書くんじゃない?」

 往々にして、過去のプログラムには設計仕様書が存在していない、無くなっている、メンテナンスされておらず仕様が食い違っていることなどがあります。つまり、仕様書なんて信用できないという事です。

P子「人だけじゃなく、すべてを信用できないのね」

3.すべてを疑ってかかれ!

 さらに言うと、他人の作ったプログラムを修正する場合も、同じように注意が必要です。そのプログラムがどこでどういう風に使われているか分かりません。

 他人が...という所、一週間前の自分が作った場合も『こいつ、何してるんだ』ってなります。そう、時間をさかのぼって、過去の自分も未来の自分も信用してはいけません。今の自分さえも信用できませんから、その前提できちんと抜かりなくコーディングすべきです。

 これが『プログラム開発の心得』です。

P子「自分すら、信用できないって事ね」

 今現在、コーディングしている自分も、信用してはいけません。

ほな、さいなら

======= <<注釈>>=======

※1 P子「重要視って、品質とか?」
 P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。

Comment(2)

コメント

おたみ

要は「プログラム開発になんて手を出すな」ってことですね(笑)

ちゃとらん

おたみさん、コメントありがとうございます。


『心得』とか言ってますが、利用者って、私の想定(想像?)の遠く及ばない使い方をされるケースがあり、痛い目に合う事があります。
その都度、新しい発見が出来たと喜んで…いませんね。

コメントを投稿する