コーディングをするときの3つの基本的な考え方

コーディングを始めたとき、何を気にしながら作業をしますか?

正しく動くように作るというのは最低限ですが、他にどんなことを考えますか?

いろいろあると思いますが、下記のようなことを考えると思います。

  • 綺麗にソースを書く
  • コメントをたくさん書く
  • 既存の処理を真似て書く
  • etc…

これらのことでもいいと思いますが、

もっと本質的に、いいコードを書くために考えて作業して欲しい点が3つあります。

コーディングで考えるべき3つのこと

1.可読性

可読性とは、作った本人以外が見てもわかりやすく書くということです。

他人のコードは読みにくいものが多いです。

作った本人でさえ、作った直後なら読めたコードも数年経てば分からなくなってしまいます。

保守フェーズになれば、作った人以外も見る機会が多くなります。

そこで下記の点に注意して作業してみてください。

①コメントが適切か
②インデントが合っているか
③メソッド化されすぎていないか

①については、
コメントは多い方がわかりやすいのですが適切に書かないと混乱します。
ですが、逆に細かく書きすぎてもわかりにくいです。
またコピーペーストした時のコメントがそのまま残っていることも多いので必ず見直しましょう。

②については、多くの統合開発環境(IDE)やフォーマッタというツールが、インデントを自動で揃えてくれます。そのようなツールを使用していない場合には、見直して揃えるようにしましょう。

③については、
処理を構造化するために細かくメソッドを作っていることがありますが、やりすぎると処理を追うときにわかりづらくなります。
1つの処理がだらだら書かれていても読みにくいですが、メソッド化しすぎでも読みにくいことを覚えておきましょう。

2.性能

性能とは、処理の速さやメモリの使い方の効率のことです。ここでは、できるだけ処理が速くなるようにコードを書くことを指します。

ロジックに無駄な処理が多いと処理の完了までに時間がかかってしまいます。

処理に時間がかかるとシステムの要件を満たせなかったり、クレームの原因になったりします。

遅い処理になっていないか、下記の点に注意してください。

①ロジックに無駄な処理がないか
②メモリ解放はできているか
③既に実装されている処理ではないか

①について、
全体的にロジックを見て無駄なところがないかを確認します。
ループであれば、終了条件やループ脱出条件が必要ではないかを確認します。
また、絶対に当てはまらない条件式なども無駄な処理になってしまうのでよく確認しましょう。静的解析ツールを使うと、こうしたコードの問題を見つけられることがあります。

②について、メモリの管理は言語によって違います。C言語のように自分で解放する言語では、解放を忘れると使えるメモリが減っていき、処理が重くなる原因になります。これを「メモリリーク」といいます。JavaやC#のように、ガベージコレクションで自動的に解放する言語もあります。ただし、使わなくなったオブジェクトへの参照が残っていると解放されず、メモリリークの原因になります。また、ファイルやデータベースの接続は、使い終わったら閉じるようにしましょう。

③について、ソートや配列の操作など、既に標準ライブラリの機能として存在しているものがあります。その処理を自前で作成していると、無駄な処理になったり不具合の原因になったりします。標準ライブラリの処理は多くの利用実績があり、速く動くように作られていることも多いので、そちらを使用するようにしましょう。

3.汎用性

汎用性とは、他の処理でも使えるコードを書くことです。

このようなコードを書くことで製造にかかる時間を大幅に減らすことができます。

また共通処理にすることができれば、流用する際に処理動作が担保できているため試験の時間も減らすことができます。

下記の点に注意して汎用性を意識したコードを記述しましょう。

①処理の中に業務ロジックが入っていないか
②処理がパターンに対応できているか

①について、
共通の処理にする上で、業務に依存した処理が入っていると共通とは言えません。
その業務に依存した分岐などがあると他の処理から使用できなくなってしまいます。
どこまでが他処理でも使える部分なのか、どう実装すべきなのかを考えましょう。

②について、
①にも関連してきますが、どんな処理から呼ばれても大丈夫なように考えているかです。
例えばファイル出力する処理で、A処理はカンマ区切り、B処理はタブ区切りで出力したい場合、
テキスト出力処理をカンマ区切りで作ってしまうと、区切り文字以外は共通でもB処理から使用することができません。
例の場合、区切り文字も引数で渡すことで共通化することができます。
このように、業務に依存せずどの処理からも使用できるようにしましょう。

まとめ

コーディングの際に考えて欲しいことを3つ書きましたが、いきなり全て実施するのは難しいです。

まずは、可読性の高いコードを作成することをお勧めします。

次に性能を意識しましょう。

作成している言語について習熟度が上がってくると色々な技術が身についてくるので性能の高いコードが記述できるようになります。

最後に汎用性でいいと思います。

汎用性はなかなか身につきません。保守フェーズになりコードの解析や機能追加が発生したときに汎用性の大切さに気づき始めます。

ここで、こう書かれていれば直しやすかったななどと思ったことを覚えておき、次の製造で活かしましょう。

ただ、3つ全てを高くすることは難しく、

性能をあげすぎると可読性が落ちることがあったり、

汎用性をあげすぎると性能が落ちることがあったりします。

3つのバランスを考えながらコードを作成することが大切になるので、そのあたりを考えながら製造に挑んでください。