![]() |
コーディインルール |
コンピュータ言語を解説した書籍などではコーディングリールなどはどこにも出てこないでしょう。多分、「ソフトウェアの運用と管理」みたいな書籍には記述されていると思います。
実際オラは1日3万円くらいのセミナーでソフトウェア資産の運用と管理を受講しました。このセミナーでは個人で自由気ままにソフト開発をすると破綻をきたす。ということがメインでした。また、大卒新入社員のコンピュータソフトに関する教育でこれから述べるようなことを説明しました。 実際、大企業ではソフトを重要な資産として、設計・製造・テストの各工程においてマニュアルが完備されています。このマニュアルが理解できないとクビです。何のためにマニュアルがあるのか? ●誰が見てもわかりやすい記述に統一 ●ソフト設計で規則に準拠した設計手法により変な設計・製造の排除 ●開発したソフトを財産とするため その他いろいろあるでしょう? 逆に何もルールなしの自由奔放な環境では、 ●ソースが500行を超えたら開発ができなくなった ●何年かたってバージョンアップができない ●バグだらけ。修正が困難。 ただし、100行以下なら結構なんとなくできますが、規模が大きくなるとルールがないと混沌の世界で仕事をすることになります。 それではPythonに限らず他の言語でも適用できる最低限のルールを記述します。 関数の行数はモニタの画面に収まる長さにする 30年くらい前は1モジュールは50行以内にする。という社内規定がありました。当時のモニタは50行だったのです。要はスクロールが必要な行数になるとカーソルキー操作が発生して画面から見えなくなる行が発生する。 ということで効率が悪化します。 ある会社からソースが500行以上で開発した人がもうどうにもならなくなっていました。助けてくれと依頼があり結局設計やり直しで対応しました。 同じようなことはwebの仕事でもありました。一応ソフトハウス。ソフトで飯を食っている人でもこんなやっつけ仕事をしているんだなぁ、と呆れてしまいました。 変数の命名規約 特にグローバル変数は見た目で型がわかるようなルールを適用すると間違いがなく作業効率が上がります。Visual C++ではルールが多いのですが、Pythonなら少なくてすみます。 グローバル変数の命名規約 g_Xxxxxxxx とします。g_が付いたらこれはグローバル変数だとすぐわかります。 文字列 strXxxx 数値型 nXxxxxx ブール型 bXxxxxx この命名規約をグローバル変数と関数の引数に適用します。 g_strTitle ,g_nThisYaer, g_bService foo(strTitle), foo(strYear), foo(bService) このようにすれば関数の引数を知るのに、関数定義を参照する手間が省けます。 関数の命名規約 多くの言語で多く使われている先頭語を以下に示します。 getXxxxx() setXxxx() isXxxxx() isXxxx()はTrueまたはFalseを返すだけで他の言語と同じです。setXxxxx()は引数にセットしたいデータを代入するのは他の言語と同じです。 getXxxxx()が曲者です。いや他の言語より拡張されています。まずは普通の当たり前の記述。
事項結果:
特に何も言うことないですね。次の例はいかがでしょうか?
実行結果:
戻り値が2つあります。(^_-)-☆Cでは戻り値はひとつだけ。複数のデータを返すには構造体を使います。Cでソフトを開発していた時こんなことができたらいいなぁ!と思ったことがありました。Pythonは複数の戻り値を扱うことができます。 ということであなたが個人でPythonをつかうのであれば、あなた自身のコーディングルールを作って開発効率を上げましょう。 |