コーディングをするときの3つの基本的な考え方
コーディングを始めたとき、何を気にしながら作業をしますか?
正しく動くように作るというのは最低限ですが、他にどんなことを考えますか?
いろいろあると思いますが、下記のようなことを考えると思います。
- 綺麗にソースを書く
- コメントをたくさん書く
- 既存の処理を真似てかく
- etc…
これらのことでもいいと思いますが、
もっと本質的に、いいコードを書くために考えて作業して欲しい点が3つあります。
コーディングで考えるべき3つのこと
1.可読性
可読性とは、作った本人以外が見てもわかりやすく書くということです。
他人のコードは読みにくいものが多いです。
作った本人でさえ、作った直後なら読めたコードも数年経てば分からなくなってしまいます。
保守フェーズになれば、作った人以外も見る機会が多くなります。
そこで下記の点に注意して作業して見てください。
①コメントが適切か
②インデントが合っているか
③メソッド化されすぎていないか
①については、
コメントは多い方がわかりやすいのですが適切に書かないと混乱します。
ですが、逆に細かく書きすぎてもわかりにくいです。
またコピーペーストした内容がそのまま前になっていることも多いので必ず見直しましょう。
②については、
使用する統合開発環境(IDE)によってはインデントを自動で合わせてくれるものありますが、
そのようなIDEを使用していない場合には、見直してタブを使って揃えるようにしましょう。
③については、
処理を構造化するために細かくメソッドを作っていることがありますが、やりすぎると処理を追うときにわかりづらくなります。
1つの処理がだらだら書かれていても読みにくいですが、メソッド化しすぎでも読みにくいことを覚えておきましょう。
2.機能性
機能性とは、できるだけ処理が早くなるようにコードを書くことです。
ロジックに無駄な処理が多いと処理の完了までに時間がかかってしまします。
処理に時間がかかるとシステムの要件を満たせなかったり、クレームの原因になります。
遅い処理になっていないか、下記の点に注意してください。
①ロジックに無駄な処理がないか
②メモリ解放はできているか
③既に実装されている処理ではないか
①について、
全体的にロジックを見て無駄なところがないかを確認します。
ループであれば、終了条件やループ脱出条件が必要ではないかを確認します。
また、絶対に当てはまらない条件式なども無駄な処理になってしまうのでよく確認しましょう。
②について、
基本的にメモリの解放はAPやOSが自動でやってくれますが、なんらかの理由でできない場合があります。
そのため、明示的にメモリ解放をコードに書くことで確実にメモリ解放を行います。
このメモリ解放は忘れがちですが、処理が重くなったりする原因になるため、忘れないようにしましょう。
③について、
ソートや、配列の操作など、既にコントロールの機能として存在しているものがあります。
その処理を自前で作成していると、無駄な処理であったり故障の原因になったりします。
最初から実装されている処理の方が早いため、そちらを使用するようにしましょう。
3.汎用性
汎用性とは、他の処理でも使えるコードを書くことです。
このようなコードを書くことで製造にかかる時間を大幅に減らすことができます。
また共通処理にすることができれば、流用する際に処理動作が担保できているため試験の時間も減らすことができます。
下記の点に注意して汎用性を意識したコードを記述しましょう。
①処理の中に業務ロジックが入っていないか
②処理がパターンに対応できているか
①について、
共通の処理にする上で、業務に依存した処理が入っていると共通とは言えません。
その業務に依存した分岐などがあると他の処理から使用できなくなってしまいます。
どこまでが他処理でも使える部分なのか、どう実装すべきなのかを考えましょう
②について、
①にも関連してきますが、どんな処理から呼ばれても大丈夫なように考えているかです。
例えばファイル出力する処理で、A処理はカンマ区切り、B処理はタブ区切りで出力したい場合、
テキスト出力処理をカンマ区切りで作ってしまうと、区切り文字以外は共通でもB処理から使用することができません。
例の場合、区切り文字も引数で渡すことで共通化することができます。
このように、業務に依存せずどの処理からも使用できるようにしましょう。
まとめ
コーディングの際に考えて欲しいことを3つ書きましたが、いきなり全て実施するのは難しいです。
まずは、可読性の高いコードを作成から作成することをお勧めします。
次に機能性を意識しましょう。
作成している言語について習熟度が上がってくると色々な技術が身についてくるので機能性の高いコードが記述できるようになります。
最後に汎用性でいいと思います。
汎用性はなかなか身につきません。保守フェーズになりコードの解析や機能追加が発生したときに汎用性の大切さに気づき始めます。
ここで、こう書かれていれば直しやすかったななど思ったことを覚えておき、次の製造で活かしましょう。
ただ、3つ全てを高くすることは難しく、
機能性をあげすぎると可読性が落ちることがあったり、
また、汎用性をあげすぎで機能性が落ちることがあります。
3つのバランスを考えながらコードを作成することが大切になるので、そのあたりを考えながら製造に挑んでください。