美しいコードが書きたいです。

「読みやすい」「メンテナンスしやすい」など、美しいコードの書き方について解説したおすすめのウェブサイトや本を教えてください。
特に言語は問いませんが、個人的にLL、特にPHPに特化しているとうれしいです。
「PHPなんかで美しいコードはかけないよ!」というそもそも論はナシの方向で。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/06/03 15:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答9件)

id:kemworld No.1

回答回数62ベストアンサー獲得回数1

ポイント16pt

「読みやすい」「メンテナンスしやすい」というところだととりあえず


PEAR :: Manual :: 標準コーディング規約

http://pear.php.net/manual/ja/standards.php


でしょうか。


あと、命名規則を整理することがわりと重要なのではないでしょうか。変数名のつけ方とかわりときちんとした正解、というか王道というのがどれなのかボクもいまだによくわかりませんが。

ちなみに過去この件で考えたことのまとめをブログに書いてます↓(どうでしょうか?)


命名規則もろもろ(ファイル名、変数名、関数名、クラス名)。 - Kemworld::Diary

http://d.hatena.ne.jp/kemworld/20071009/1191902294


あとはデザインパターンとかですかね↓

http://www.doyouphp.jp/sample/sample_class_list.shtml


正直読みやすいかどうか、という観点だと超オブジェクト指向的なコーディングよりも、ほどほどな感じの、手続き型っぽい?コーディングのほうが分かりやすいよなあ、と思ったりもするんですが。


ボクも非常に興味あることなので是非他の方の回答も読みたいです!

id:studio15

命名規則は重要ですねー。

自分で書いたコードでさえも「なんだこの変数…」となることがしばしば…

2008/05/27 17:18:32
id:heart-rhythm No.2

回答回数32ベストアンサー獲得回数1

ポイント16pt

すこし古いしCの本ですが、こういうトンデモなソースの例を見ると、意識が変わるかもしれません。

Cプログラミング診断室―さらに美しく健康的なプログラムのために

Cプログラミング診断室―さらに美しく健康的なプログラムのために

  • 作者: 藤原 博文
  • 出版社/メーカー: 技術評論社
  • メディア: 単行本


あと、デザインパターンの話が出ていましたが、デザインパターンはどちらかというと大局的というか、アーキテクチャや実装の構造を設計するときに頭に入っていると役立つ考え方です。

リファクタリングは逆に、実装しながらコードを壊さずに整えていく手法を提唱するものです。

こういった手法がマスターできると、命名に失敗したと思っても、安全に修正することができます。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチン ファウラー Martin Fowler 児玉 公信 平澤 章 友野 晶夫 梅沢 真史
  • 出版社/メーカー: ピアソンエデュケーション
  • メディア: 単行本


あとは、ツールをうまく活用することも重要というかオススメです。

PHPの開発についてはあまり知りませんが、

・ドキュメント生成ツール(doxygen) - コメントやドキュメントは重要です。

・UML設計・リバースエンジニアリングツール(Enterprise Architect) - みんながわかりやすい構造にするのも重要です。

・開発環境(Eclipse,etc) - 実践しやすい環境を選択するのも重要です。

などを使いこなすというのも一つの助けになるかもしれません。

#emacs/muleなどスペルチェッカ機能のあるエディタもあります。

#変数名のスペルミスを防ぐためにも重宝するかもしれません。

あとこれは個人的な経験ですが、「トリッキーなコード」を書くよりは、冗長でも「標準的なコード」を書くほうがメンテナンスなどは楽で美しく見えます。

「美しい」とは何を指すのか?というのは状況依存でしょうが、「トリッキーなコード」というのは、書いた本人は「何て頭がいいんだろう!スマートなコードがかけた!」と自己陶酔しやすいわけですが、そういうコードを他人が読んだときに一発で意味が理解できるかどうかは別問題だったりします。

そういう意味では、Perlなどはそういうコードが書きやすい一方、あとになって、「何でこんな風に書いたんだろう?」「何でこのコードでこういう動作になるんだろう?」という状況になりやすい側面もあるように思います。

id:studio15

自分ではコードのダメな部分って気づきづらいですからねえ…

2008/05/28 17:34:51
id:ttakao No.3

回答回数276ベストアンサー獲得回数31

ポイント16pt

あんまりたくさん本を読んで、さぁ書くぞとなると堅苦しくて一行も書けなくなっちゃいますよ?

これくらいのルールで私は十分美しいと思うのですが。


1.ルーチンごとに数行、なにをするか注釈をいれる。引数説明があればベター

2.ネストは必ずタブでインデントする

3.数行おきにコードの「意図」をコメントする

4.50−60行でひとまとまりを終わりにする

5. 省略形のifは使わない

こんなもんですが。ダメですかねぇ。

id:redwing1 No.4

回答回数541ベストアンサー獲得回数3

ポイント16pt

それなりのエディタをつかえば。viとかemacsとか。

id:tedmans No.5

回答回数114ベストアンサー獲得回数3

ポイント16pt

「読みやすい」・「メンテナンスしやすい」のと「美しいコード」は本質的には違うもんだよ

少なくとも美しいコードが読みやすくメンテしやすいとは限らない

そこんところは勘違いしないように

きちんと決められた標準コーディング規約を守って適切なコメントを書くように心がけるのが先決

まずはちゃんとした日本語(英語でもいいけどさ)で文章を書けるようになることだね

美しい日本語の書き方話し方―一冊でわかる言葉の常識。

美しい日本語の書き方話し方―一冊でわかる言葉の常識。

  • 作者: 山岸 弘子
  • 出版社/メーカー: 成美堂出版
  • メディア: 単行本

id:garyo No.6

回答回数1782ベストアンサー獲得回数96

ポイント15pt

>美しいコードが書きたいです。

>「読みやすい」「メンテナンスしやすい」

美しさは数値化できませんが、ソースコードの「読みにくさ」のメトリクスとして

「McCabeのサイクロマチック数」(マッケーブの循環的複雑度)というものがあります。

以下に解説がありますが、

http://www.linkclub.or.jp/~tumibito/soft-an/metrics/mccabe.html

2.循環的複雑度の意味するところ,数値の目安

 試験(特にホワイトボックステスト)のしにくさや保守(変更)作業のしにくさを表します.

 文献 [2] p.230 によると,以下のような目安をあげています.

1. 10 以下であればよい構造

2. 30 を越える場合,構造に疑問

3. 50 を越える場合,テストが不可能

4. 75 を越える場合,いかなる変更も誤修正を生む原因を作る

誤修正する確率も以下であると言われています。

< 10 約 5%

20 - 30 約 20%

50 以上 約 40%

100 近く 約 60%

以下のSourceMonitorというツールを使用すると測定できます。

http://www.campwoodsw.com/sourcemonitor.html

PHPは対応していませんが、以下の言語の測定ができます。

関数(モジュール)単位で複雑度が測定できます。

http://art7.photozou.jp/pub/678/2678/photo/4502410.png

いきなり、複雑度の高い関数に手をつけると、悲惨な目にあいますので(100超える関数はプログラマなら見ると絶対さわりたくなくなります><)


普段から測定して複雑度が10~20程度を超えないように、また複雑度の高い関数はリファクタリングを行うようにすることで、読みやすく、メンテナンスしやすいコードになると思います。

id:noriyuki No.7

回答回数1ベストアンサー獲得回数0

ポイント15pt

本のタイトルがまさに、ですが。

http://d.hatena.ne.jp/asin/0596510047

言語はバラバラなのですが、コードが記述者自身(半端じゃない面子です!)により解説されているという、涎垂ものの一冊です。

「美しい」という言い方は人により感じ方が様々になってしまうので難しいところですが、著名な方が何を善しとしてコードを書いているのかを知ることは参考になると思います。

id:espresso3389 No.8

回答回数35ベストアンサー獲得回数6

ポイント15pt

プログラムに限ることではありませんが、自分で書いた古いコード(できれば、1ヶ月以上前に書いたもの)を読んでみることをお勧めします。コードを書いたときの記憶が鮮明じゃないものが良いです。

そうすると、まるで他人の書いたコードのように読みづらいとか、意味がわからないと感じるコードがあると思うのです。そこに気づくことが最初のステップです。逆に言えば、おそらく、他人があなたのコードをみた場合にはほとんど同じように感じるわけです。

そして、今の自分ならどう修正できるかなと考えてみましょう。コードを修正する時間と自由があるのなら、実際に修正してみるのが良いです。自分のコードを読み直すという作業をやっていくだけでもコードはどんどん洗練されていくはずです。

私は20年以上プログラムを続けていますが、過去のコードには恥ずかしいものが多いです。逆説的にいえば成長したなぁというわけでもありますが・・・。そういう意味では、美しいコードを書くことにゴールはないのでしょう。

id:ka-wara No.9

回答回数4ベストアンサー獲得回数0

ポイント15pt

PHPの話でなく(ハンガリアン記法の話)、また具体例が少ない記事で恐縮ですが、

冒頭の、コードで「きれい」さを保つ考察は「読みやすい」「メンテナンスしやすい」に通じており、

一読の価値ありと思います。


「間違ったコードは間違って見えるようにする」

http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9...

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません