原文は “Nettuts+”に 積まれた “Top 15+ Best Practices for Writing Super Readable Code”だ.

翻訳は 私が したし, 当然 誤役が ある 数 ある.

——- 翻訳 手始め ——–

私たちは たいてい 月に 2回 ずつ Nettuts+で 人気あった 文を 再開制する.

コード 家督性は プログラミング 世界で 普遍的な 主題だ. これは 私たちが 開発者として 仮装(家長) 先に 学ぶ ものなど 中 一つだ. これ 文は コード 家督性に 関する 仮装(家長) 重要な 例題 熱 五つ 行くのを 詳しく 説明する.

1.柱石 & 文書化

IDE((Integrated Development Environment:統合 開発 環境)銀 去る 何 年間 刮目する に如く 発展を した. IDE増えた この前より 柱石を もっと 役に立つように 月 数 あるように 日 与える. 次と ような 標準 柱石は IDEわ 違う ツールが これを 役に立つように 使う 数 あるように 日 与える.

私が 追加した 関数 正義 柱石は 私が 関数を どこで サヨングハドンガンに 見える. はなはだしくは 違う ファイルでも 見える.

これは もう一つの はいだ. 私が サード パーティー ライブラリで 関数を 呼び出す 場合だ.

これ 部分的な 例 聞いた PHPDocAptanaを 基盤で した.

2.一貫された ドルヨスギ

多い 人々が コード ドルヨスギを すると するという 事実を 分かって ある ことと 思う. しかし, また コード ドルヨスギを 一貫されるように 維持する 蟹 良い 考えという のを つく のは 価値が ある.

コード ドルヨスギを する 何 枝 方法が ある.

スタイル1

function foo() {
	if ($maybe) {
		do_it_now();
		again();
	} else {
		abort_mission();
	}
	finalize();
}

スタイル2

function foo()
{
	if ($maybe)
	{
		do_it_now();
		again();
	}
	else
	{
		abort_mission();
	}
	finalize();
}

スタイル3

function foo()
{	if ($maybe)
	{	do_it_now();
		again();
	}
	else
	{	abort_mission();
	}
	finalize();
}

私は 2番(回) スタイルで コードを 組んだり したが 最近には 1番(回) スタイルで 変えた. するが これは 全面的に 選好 問題だ. 皆が よると する “最高の” スタイルは ない. 実際で, 最高の スタイルは, 一貫された スタイルだ. もし チームに 俗解 あるとか プロジェクトの 一部 コードだけ 組んで 越すと する のなら, もう 作成された コードの スタイルを よると する.

一つの ドルヨスギ スタイルが 必ず また 違う スタイルと 完全に 仕分けされると する のは ない. 時々 いくつか 違う 規則を 交ぜる 場合が ある. 例たち 入れば, PEAR コーディング 標準で コード 部分を 開く “{“街 奮起文では ような 竝びに ある. するが 関数 正義では 次 竝びに ある.

PEAR スタイル:

function foo()
{                     // placed on the next line
    if ($maybe) {     // placed on the same line
        do_it_now();
        again();
    } else {
        abort_mission();
    }
    finalize();
}

ドルヨスギを ため タップ 代わり そのまま 空白を 使うという 粘度 注目しなさい.

違う ドルヨスギ スタイルに 関する ウィキペディア 文度 参考しなさい.

3. そらぞらしい 柱石は つけるの ないで

コードに 柱石を つける のは 良い 習慣だ. しかし それが 過度とか 重複されては 中 なる. 次 例を 見よう.

// get the country code  [翻訳:国家 コードを 持って来る]
$country_code = get_country_code($_SERVER['REMOTE_ADDR']);  

// if country code is US  [翻訳: 国家 コードが USイン 場合]
if ($country_code == 'US') {  

    // display the form input for state  [翻訳: 国家 コードを ための input フォームを 出力する.]
    echo form_input_state();
}

明白な のを 柱石で 繰り返す のは 無駄な 仕業だ.

コードに 柱石を 必ず ダルアヤゲッダなら, たいてい 竝びで こんなに 月なら なる.

// display state selection for US users  [翻訳: アメリカ 使用者を のために 国家 選択 領域を 見えて 与える.]
$country_code = get_country_code($_SERVER['REMOTE_ADDR']);
if ($country_code == 'US') {
    echo form_input_state();
}

4. コードを グループで 縛りなさい

たびたび, 特定の 仕事には コード 色々 竝びが 必要だ. こういう コードたちを ヴィン 竝びで 分離した それぞれの ブロックで 区分して 置く のが 良い.

ここ 簡単な 例題が ある.

// get list of forums  [翻訳: フォーラム リストを 持って来る]
$forums = array();
$r = mysql_query("SELECT id, name, description FROM forums");
while ($d = mysql_fetch_assoc($r)) {
    $forums []= $d;
}  

// load the templates  [翻訳: テンプレートを 呼んで 来る]
load_template('header');
load_template('forum_list',$forums);
load_template('footer');

5. 一貫された ネーミング 規則

PHP 自体が 一貫された ネーミング 規則を よるの なくて あるという 問題が ある.

  • strpos() vs. str_split()
  • imagetypes() vs. image_type_to_extension()

なによりも, 名前を 作る 焚く 単語の 境界を 明確に 日 与えると する. 仮装(家長) 多く 使う のは 次 二 持つ.

  • camelCase: 始めて 単語を 除いた 各 単語の 第一 字を 大文字で する.
  • underscores: 各 単語を 下線で 区分する. mysql_real_escape_string() する 式で.

違う オプションが あるという のは, 私が 先に進んで 言った 大道, ドルヨスギ スタイルと 似ている 状況が なるという のを 意味する. もう 存在する プロジェクトが どうな 慣習を よって あったら, あなたは 必ず 彼 慣習を よると する. また, どうな 言語が 特定の ネーミング 規則を よる 傾向が あったら, あなたも そうに すると 割 のだ. 例を 入れば, ジャバでは 大部分の コードが camelCase路 なって ある. 一方に PHPでは 大部分が underscores 規則を よる.

class Foo_Bar {  

    public function someDummyMethod() {  

    }  

}  

function procedural_function_name() {  

}

再び 言うが, 明白な “最高の” スタイルは ない. 一貫された 蟹 重要だ.

6. DRY 原則

DRY増えたDon’t Repeat Yourself(自分を 繰り返すの 言葉 の)義 弱者だ. DIEと したり する :Duplication is Evil.(重複は 悪だ.)

これ 原則は 次と ようだ.

“あらゆる 知識は 彼 自体で システム 中で 唯一だと して, 曖昧では 中 なって, 権威 あるように 表現されると する.”

一般的に 大部分の アプリケーションは 繰り返し的な 仕事を 自動化する 蟹 目的だ. (一般的に コンピューターが そうだ.) これ 原則は あらゆる コードで 維持されると する. ウェブ アプリケーションでさえ 同じだ. ような コードが どこにも 繰り返されれば 中 なる.

例を 入れば, 大部分の ウェブ アプリケーションは 多い ページで 構成される. これ ページたちには 共通 要素が ある 可能性が 大きい. ヘッダーと プトが そうな 可能性が 仮装(家長) 高い. ヘッダーと プトを あらゆる ページごとに コピーして 貼り付け する のは 良いでしょう ない. Jeffrey Way増えた ここ西 コード イグニト(ウェブサイト 生成 ツール:CMS義 一種)路 テンプレートを 生成する 方法を 説明する.

$this->load->view('includes/header');
$this->load->view($main_content);
$this->load->view('includes/footer');

7. コードが 深深と 入って行く のを 避けなさい(Avoid Deep Nesting)

[訳者 株 : Nesting銀 奮起文 などで {}路 くるむ 部分を 言う ようだ. if門 中の if門 中の if門 こういう のを Deep Nestingと する よう.]

コードが あまり 深深と 入って行けば 読んで 付いて行くこと 大変だ.

function do_stuff() {

// ...

	if (is_writable($folder)) {

		if ($fp = fopen($file_path,'w')) {

			if ($stuff = get_some_stuff()) {

				if (fwrite($fp,$stuff)) {

					// ...

				} else {
					return false;
				}
			} else {
				return false;
			}
		} else {
			return false;
		}
	} else {
		return false;
	}
}

読み取り 易しく 夏期 ためには, 入って行く レベルを 減らせば なる.

function do_stuff() {

// ...

	if (!is_writable($folder)) {
		return false;
	}

	if (!$fp = fopen($file_path,'w')) {
		return false;
	}

	if (!$stuff = get_some_stuff()) {
		return false;
	}

	if (fwrite($fp,$stuff)) {
		// ...
	} else {
		return false;
	}
}

8. 竝び 長さを 制限しなさい

私たち 目は 狭くて 上下で 長い 熱を 読む ところ もっと 最適化されて ある. ところで これ だから 新聞が こんなに 生じた のだ.

水平で 長い 竝びを 作成するように なる ガール 避ける 方法を 見えて 与える 良い 例題が ある.

// bad
$my_email->set_from('[email protected]')->add_to('[email protected]')->set_subject('Methods Chained')->set_body('Some long message')->send();

// good
$my_email
	->set_from('[email protected]')
	->add_to('[email protected]')
	->set_subject('Methods Chained')
	->set_body('Some long message')
	->send();

// bad
$query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = '123'";

// good
$query = "SELECT id, username, first_name, last_name, status
	FROM users
	LEFT JOIN user_posts USING(users.id, user_posts.user_id)
	WHERE post_id = '123'";

また, Vimを 使う 人のように, 誰か コードを ターミナル 窓で 読むと したら 竝びの 長さを 80定木で 制限する 蟹 良い.

9. ファイルと フォルダを 組職化しなさい

技術的には, アプリケーションの あらゆる コードを たいてい ファイル 中に 入れる 数 ある. するが そうに すれば コードを 読む 間 悪夢に 苦しむように なるという ガール 証明するように なる のだ.

私が 初め プログラミング プロジェクトに 入って行った 時, 私は “インクルで

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。