良いコードを目指して ~見た目にこだわる~
コードを書く際に、見た目は気になりますか?
なんとなく嫌悪感を示す方もいるかもしれませんが、見た目にこだわることも”良いコード”に近づく道だと感じています。
”良いコード”については、前回の記事をご覧ください。
今回は、そんなにマメでない私でも取り組みやすかった実例をご紹介していきたいと思います!
縦の意識
何かスポーツの戦術みたいですね。(笑)
これは基本中の基本だと思いますが、インデントを揃えるという事です。
無意識のうちにやってる方も多いのではないでしょうか。
プログラムのインデントを揃える事はもちろんですが、コメントなども縦列を意識するだけで読みやすさがかなり変わります。
プロジェクトとして、画面幅をとらない為に同一行に説明コメントを挿入する決まりがあるとします。
下のコード例を見てみましょう。
String lastName; //姓 String firstName; //名 String gender; //性別 Integer age; //年齢 List<**Dto> followList; //フォローリスト Boolean isActiveUser; //有効ユーザ
定義だけのはずが、かなり見にくいですね、、、
次に揃えたコード例を見てみましょう。
String lastName; //姓 String firstName; //名 String gender; //性別 Integer age; //年齢 List<**Dto> followList; //フォローリスト Boolean isActiveUser; //有効ユーザ
かなり見やすくなりました。
極端な例ではありますが、このように縦の意識を持つだけでかなり綺麗になります。
上の例はコメントでしたが、この意識は演算処理やメソッド呼び出しのパラメータなどでも同じ事が言えると思います。
例えば同じメソッド呼び出しが並んだ際に、タイプミスやパラメータ不備など容易に気付くことができます。
何でもかんでも揃えるというよりは、これは揃えたほうが見やすそうだな、、と感じる場合には揃えるようにしましょう。
纏まりの意識
また戦術みたいな言葉になってしまいました。
処理やメソッド毎に纏まりを意識すると見やすくなります。
これも無意識のうちにやってる方も多いのではないでしょうか。
例えば、コンストラクタなどで様々な処理を行うクラスがあるとします。
そのコンストラクタで行う処理を1行ずつ空白行無しで列挙していくとどの部分で何をしているのかが視覚的に分かりづらいです。
”纏まり”を分けるのにも個人差はあるかもしれませんが、処理の趣旨が変わったと感じたら空白行を入れ、纏まりで分けてあげると良いでしょう。
そうすることで、後から見てもパッと見で大体の処理の流れがイメージできますし、改修するにしてもどこに着目すれば良いかが見つけやすくなります。
また、これはメソッド毎に対しても同じ事が言えます。
特定のテーブルに対して操作を行うDaoがあるとしましょう。
Daoの既存メソッドを利用してテーブルにどんな操作が可能なのかは、実際に見てみないとわかりません。
(ドキュメント化してある場合は例外です)
ある改修依頼を受けて、少し異形な返り値のSELECTが必要となった場合に、Daoのメソッドが纏まりもなく列挙してあると、もれなくロードローラーしなくてはなりません。
これでは時間がかかってしまいます。
しかし、Daoの中でもSELECTするメソッドを1区画に纏めていると、確認場所は格段に減ります。
しかも新規メソッド追加となった場合には、その区画の最後に追記してあげるだけで、何ともすっきりします。
処理にしてもメソッドにしても、あるいはクラスにしても"纏まり"を意識しましょう。
適切なコメント
プログラムを書く上でかかせないものが、コメントです。
コメントの有無では読みやすさにかなりの差があると思います。
しかし、ソースコードの50%がコメントだとすると、本当に読みやすいのでしょうか。
コメントは適度且つ情報を与えるものでないと意味がありません。
まず量に関して私が感じることですが、先の"纏まり"毎には最低限あるべきだと思います。
これからどういう類の処理を行うのかがコメントであるだけで、初めて見る側としてはだいぶ楽になります。
その中でも+αで、”ここは説明があったほうがわかりやすいな”とか”改善点があるな”とか補足や注意すべき点を書いていくと良いでしょう。
またコメントは画面幅を必然的にとるものなので、情報量が大事です。
私は、プログラミング覚えたての頃はこんなコメントを書いていました。
//分岐処理 if( *** < 20 ){ ・・・; }
恐らく多くの方が思ったでしょう。
"な ん だ こ の コ メ ン ト は"
今の私もそう思います。(笑)
上のコメントの情報量は、はっきり言って全く価値のないものでしょう。
分岐処理なんて、コードを見る立場の人がみればすぐに分かります。
コメントをするのであれば、そのコードからは読み取る事のできない部分や、読み取るのに時間がかかる部分を書いてあげると良いでしょう。
先の例でコメントをするのであれば、以下が適切かと思います。
- どういうケースにこの中の処理を通るのか(分岐条件の日本語化)
- 分岐内で何をしているのかの概要
などが挙げられると思います。
ここまでコメントについて書いてきましたが、適切なコメントを残すことは難しいと思います。
私自身もふと"書くべきことはこれでいいのだろうか"と悩む事もあります。
極力、書いたほうがいいのかなと思ったなら書きましょう。
当たり前ですが、書いてないことは知らない人からしたらわかりません。
例え読みづらくなったとしても、コメント(記録)として残しておけば、仙人が何とかしてくれるでしょう。
次回は、もう少しロジック的な記事を書きたいなと思っています!
このブログももう少し見た目にこだわらなければ・・・