劇的に上がるPHPのスマートなコードの書き方」という某社のブログエントリが話題になってましたがそれについては、もういろんな方がいろんな言及をしているので改めて僕が言及することも無いと思うので。自分ってそういう「人に読まれること」を前提にしたコード書く時(仕事上のプログラムは99%そうだと思うのですが)どんなことに気をつけてるか、ブログ書いてみようかなぁ...とFacebookにぽつと書いたら意外と需要ありそうだったので、つらつらと書いてみた。いっても、そんな特別なことはしてない・・・と思ってます。あと、プログラム設計上こうすべき、とか、もあることはあるんですがそれよりも、もっと「これだけは心がければ」という根本的なポイントだけ。実際、僕がいろいろなソースコード見てて、読みやすいな、メンテしやすいなと思うのもこのポイント抑えてあるものが多いので。英単語を省略しない昔ながらの慣習で、返り値用の変数を「ret」「rtn」とか、msgとかstrとかはまだ可愛いと思うのですが例えば、「カテゴリ」を「Ctg」みたいな、母音を抜いて省略する表記を多用されると辛いなと。これがスコープ範囲狭いローカル変数ならいいんですがクラス名とかでこういう省略をされると結構厳しい。一昔前の、iアプリ出始めの頃のプログラミングならそういう省略も必要だったでしょうがもうきょうびそういうのはいいんじゃないかなと。*1英語のスペルミスをしない英単語を省略しない、てのとも近いのですが、地味に気になるのがこれ。率いる人の意味の「リーダー」を「reader」と平然としてあったり。ケー全盛期によくあったのは、携帯キャリアの「Carrier」を「Career」(こっちは経歴の意)とか。「アバター」も「Avater」って頻出間違いパターン。(正しくは「Avatar」)複数形変化の間違いも多いっすね。「Abilitys」とか。(正しくは「Abilities」)こういうのが積もり積もると、地味に読みにくい。コーディングしている環境が、セキュリティの都合上、インターネットに繋がりませんってのであればしょうがないですがきょうび、英語のスペルなんて、Web辞書で1分もあれば調べられるじゃないですか。「いんたーねっと」って打てば「Internet」が候補にでてくるでしょ。スペルチェック機能があるようなエディタやIDEもあるでしょうし。ここが大事なところで、一番言いたいところなんですがそういう細かいところに行き届かない人が書いたコードって実際のプログラムも、動作的に行き届いてない、残念なものが多いような傾向があるように思います。regist」*2も撲滅したいなぁ。(registという英単語はありません。正しくはregister)同じ概念を示すものは言葉を統一する例えば、課金を扱う処理を書いていてあるところでは「Payment」って単語が使われているんだけど別のところでは「Purchase」が使われているとか。ソシャゲ業界あるあるとしては、「ガチャ」が「Gacha」だったり「Gatya」だったり。いう表記ゆれを許さない。以前の仕事で、自分が某ソシャゲを設計した時は最初に「用語集と使用英単語」の表を作ってました。「風」は「wind」を使いましょう(airではなく)とか。ここまで3つは、プログラムとは全然関係ないどちらかというと、英語力というか、それ以前の(日本語で文章書く時だって同じ問題あるし)表記ゆれをさけるとか、そんなことばっかですね。人によっては、そんなの下らねえよ、って思う人もいるかもですがこういったところにきちんと行き届いているソースコードってほんと読みやすいし、メンテしやすいですよ。これだけでも充分かと思うのですが、一応プログラムに関したことも2つほど。ネストをできるだけ抑える。elseもできるだけ避ける有名な「オブジェクト指向エクササイズ」というやつにもでてきますができるだけネストを避ける。許容できたとしても3段かな。その3段全体が、エディタ1画面で収まるボリュームという前提で。それ以上になるようなら、そもそも設計がおかしいです。elseもできるだけ避けたいですね。returnで早返しするテクニック使えば、結構elseは削減できるはず。関数・メソッドの引数の数をできるだけ抑えるこれも、個人的な理想値は2つまで。座標系を扱うコンストラクタだと、3つ4ついっちゃうけど、それは例外かな。これも、引数が5個も6個もいるような関数・メソッドはそもそも設計がおかしいことが大半だと思ってます。Code」読んでね、ということにして。ネストの話と引数の話は、やや付け足し感あるのですがその前の、命名に関する部分はほんとすごく大事だと思ってます。ソースコードは書くことよりも読むことのほうが圧倒的に多いのでそれこそ、ブログ文章を校正するのと同じように(校正しない人も多そうだけど)ソースコードもそういう意識で書いていくとそれだけでも、だいぶ読みやすいコードになるよ、と思っております。おまけ最初に触れない、と言っておきながら、やっぱ事の発端になったブログの件。超カンタンにだけ触れると。