『コードクリーンの道』ノート1を読む

1867 ワード

『コードクリーンの道』ノート1を読む


一、関数について(1)


1.関数はできるだけ短くしなければならない(コードの行数は20行を超えてはならず、最大1画面の長さを超えない).各関数は1つのことしかできず、同じレベルのことしかできません(たとえば、印刷出力のコードとデータ処理のコードは同じ関数に現れるべきではありません)

複数の関数をどのように直列に接続しますか?


各関数にパラメータを渡し、大きな関数に直接関連するコードを書くのではなく、大きな関数で各小さな関数を呼び出します.
//  
	int  a,b;	// 
	char yunSuanFu	// 
**************************************
	int yunSuan1(int a, int b, char yunSuanFu){
		switch(yunSuanFu){
			case '+': return a+b;break;
			default: reutrn a-b; 
		}
	}	
**************************************
/*yunSuan1(); , , 、 , , , , ;*/
**************************************
	int jiaFa(int a, int b){
		return a+b;
	}
	int jianFa(int a, int b){
		return a-b;
	}
**************************************
};

関数が1つしかできないかどうかをどのように判断しますか?


この関数のコードを見て、もっと小さな関数を分割できますか?(パラメータの面倒を気にしないでください.これは後でコードの修正、再構築、機能の追加に良い敷居と貢献があります.)

パラメータ伝達


複数のパラメータが伝達されるのは本当に煩わしいです.関数はパラメータがないほうがいいです.1つはまあまあですが、2つはまあまあです.3つ以上は許容できます.3つ以上は恥ずかしいです.パラメータの順序を覚えるだけでなく、伝達されたパラメータの意味や役割を読むだけでなく、テストもできません.他のプログラマーにとって、あなたが書いたコードを読むには、もっと時間がかかります.一、一つのパラメータについて:1.関数を1つだけ書き換えたと仮定すると、関数名についても慎重に考えてみましょう.たとえば、次のようにします.
 void writeName(string Name);
 void write(string Name);

一つ目は二つ目の関数より意味がはっきりしている.
二、二つのパラメータについて:1.パラメータの順序、たとえば上の演算の関数を区別するために、関数名を変更します.
int a_Jia_b (int a, int b){
	return a+b;
}
int a_jian_b (int a, int b){
	return a-b;
}

2.パラメータはできるだけ少なくしなければならないが、いくつかの正確な意味を持つ関数については、2つのパラメータを使用しなければならない.
point(0,0);
point(p);

直角座標系では、最初の関数を2番目よりも使用します.
三、複数のパラメータ1について.クラスを作成してカプセル化することも考えられます.もちろん、チェーンテーブルの各ノードはクラスにカプセル化され、ツリーの各ノードはクラスにカプセル化されます.
2.判断操作だけでなく、複数のパラメータの中で識別パラメータ(bool)をなるべく渡さないことは、関数が1つのことをしているだけではないことを示します(間違っているのか、間違っているのか、実行しているのか・・・、正しいのか・・)
3.複数のパラメータはよく考える