社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

5つのプログラミング テクニック(参照元あり)

参照元の記事は以下です。自分なりに読み解いてみたいと思います。
https://nobugsproject.com/2017/04/07/5-great-programming-techniques-every-developer-should-know/

この手の英語の記事はたくさんあって、それぞれ違う観点で書いてあったりするから面白いです。

1. if 条件は必要とするメソッドの中に入れてしまおう

Encapsulate って直訳すると、カプセル化になると思うのですが、Java 用語のカプセル化とは違う意味で混乱しそうだったので、単純に”入れる”という表現で解釈しました。
一応、同じ例を参照元と同じですが書いてみると、
悪い例

if (value > 500) {
  applyDiscountForGreaterThan500();
} else if (value > 1000) {
  applyDiscountForGreaterThan1000();
}

良い例

applyDiscountIfValueIsGreaterThan500();
applyDiscountIfValueIsGreaterThan1000();

これ以上の解説は特に書いてありませんが、とりあえず、各メソッドは呼び出すけれど、実際に適用するかどうかは、各メソッドの中で判断させるべきという意味かと思います。
value が 1000 より大きい時に、両方のメソッドが適用されそうだけど良いのだろうか。とか変なところが気になります。

そもそも、悪い例に書いてあるコードでは、下のメソッドが呼ばれることはないので、条件式を逆にすべきなのですが、その不具合を避けるという意味も込められているのでしょうか。

2. package/class/method/variable の名前をちゃんと考えよう

これは分かり易いと思います。
package や class 名は、そのオブジェクトの役割に沿った名前にした方が良いと思いますし、method や variable についても、それが何なのか出来るだけ具体的な表現をすることで、プログラムの流れを追いやすくなります。
最初に思い浮かんだ名前を使うんじゃなくて、もっと良く考えてねって言ってますね。
これはとても同意したいです。

あいまいな名前の例

Double clientValue; // クライアントの何の値なの ?
 
void hide() // なにが隠れるの ?
 
class Historic {} // このクラスはすべての歴史なの ?
3. IDE のショートカットを使いこなそう

これは耳が少し痛いです。
IDE って便利なショートカットを備えていると思うのですが、覚えるのが面倒で、使っていないショートカットもたくさんあります。
この記事では eclipse を例に挙げていますが、使ったことがないのもあります。

もしショートカットを使わずに手動でやってしまったら、一旦その処理を元に戻して、ショートカットでやり直しなさいとのこと(覚えるために)。
確かに生産性が上がるとは思うので、なるべく意識して使うようにはしたいです。

4. 必要とする機能はメソッド化してしまおう

同じような処理を何度も書くくらいなら、メソッドに入れて使うようにすべきということと思います。

Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, +1);
Date userDate = c.getTime();

この例にあるような日付の計算などは、共通で何度も呼び出される可能性が高い処理だと思いますので、ユーティリティクラスにまとめてしまうのが良いだろうと思います。
もっと言うなら、ライブラリにしてしまって、アプリケーション間でも共有できるようにしても良いと思います。

5. コードレビューする文化をつくろう

自分のソースコードを他人に見られたくないとか、恥ずかしいとか思うかもしれないけど、勇気を出して他人に見てもらうべきということですね。
確かに、他人に見てもらうことで、自分が気づかなかった観点でより良いコードが書けることに気づいたり、バグが見つかったり、メリットはたくさんあるように思います。
そういったことが出来る文化や、仲間に出会えるかって、実はとても重要なことなのかもしれません。

感想

一応、すごいテクニックという見出しの記事でしたが、比較的に基本的な内容で読みやすかったです。
ただ、どれも大切な習慣であることには違いないと思います。