綺麗なコードを書く7つの方法
もっと読む
綺麗なコードを書く7つの方法
まず、私は本論で述べたいのですが、純粋に美学の観点からコードを書きます.技術、論理などではありません.綺麗なコードを書くための7つの方法は以下の通りです.
1,if文を早く終わらせます.
例えば、以下のJavaScript文はとても怖いです.
2,単純なブール演算(論理演算)だけであれば、if文は使わないでください.
たとえば:
たとえば:
1
バージョン制御を使用すれば、前のバージョンのコードを簡単に見つけることができます.もし他の人があなたのコードを大々的に読んでいたら、削除するコードであることが分かります.これは本当に恨みます.
長いコードを見るのは大変です.特にコード自体の機能が小さいです.以下のとおりです
あえて70文字以内というわけではないですが、理想的な長さは120文字以内ということです.コードをインターネットに投稿すると、ユーザーが読むのは難しいです.
7,一つの機能(または関数内)にコード行が多すぎないようにしてください.
昔の同僚がVisual C++臭いと言っていましたが、関数内で10,000行以上のコードを持つことは許されません.コードの行数の上限がよく覚えていません.彼の言っていることが正しいかどうかは分かりませんが、彼の意見にはあまり賛成できません.もし一つの関数が50行を超えたら、どれぐらい大変ですか?知っていますか?また、ifループが延々と続いています.それに、マウスを転がして前と後ろのコードを合わせてください.私にとって35行以上のコードは理解するのが難しいです.私の提案はこの数字を超えると一つの関数コードを二つに分割することです.
綺麗なコードを書く7つの方法
まず、私は本論で述べたいのですが、純粋に美学の観点からコードを書きます.技術、論理などではありません.綺麗なコードを書くための7つの方法は以下の通りです.
1,if文を早く終わらせます.
例えば、以下のJavaScript文はとても怖いです.
1 function findShape(flags, point, attribute, list) {
2 if(!findShapePoints(flags, point, attribute)) {
3 if(!doFindShapePoints(flags, point, attribute)) {
4 if(!findInShape(flags, point, attribute)) {
5 if(!findFromGuide(flags,point) {
6 if(list.count() > 0 && flags == 1) {
7 doSomething();
8 }
9 }
10 }
11 }
12 }
13 }
でも、このように書くと、ずっと綺麗です.
1 function findShape(flags, point, attribute, list) {
2 if(findShapePoints(flags, point, attribute)) {
3 return;
4 }
5
6 if(doFindShapePoints(flags, point, attribute)) {
7 return;
8 }
9
10 if(findInShape(flags, point, attribute)) {
11 return;
12 }
13
14 if(findFromGuide(flags,point) {
15 return;
16 }
17
18 if (!(list.count() > 0 && flags == 1)) {
19 return;
20 }
21
22 doSomething();
23
24 }
第二の表現はあまり好きではないかもしれませんが、if値に素早く戻るという考えが反映されています.不必要なelse陳述を避けるためにも理解できます.2,単純なブール演算(論理演算)だけであれば、if文は使わないでください.
たとえば:
1 function isStringEmpty(str){
2 if(str === "") {
3 return true;
4 }
5 else {
6 return false;
7 }
8 }
と書いてもいいです
1 function isStringEmpty(str){
2 return (str === "");
3 }
3、空白を使うなら、これは無料です.たとえば:
1
function getSomeAngle() {
2 // Some code here then
3 radAngle1 = Math.atan(slope(center, point1));
4 radAngle2 = Math.atan(slope(center, point2));
5 firstAngle = getStartAngle(radAngle1, point1, center);
6 secondAngle = getStartAngle(radAngle2, point2, center);
7 radAngle1 = degreesToRadians(firstAngle);
8 radAngle2 = degreesToRadians(secondAngle);
9 baseRadius = distance(point, center);
10 radius = baseRadius + (lines * y);
11 p1["x"] = roundValue(radius * Math.cos(radAngle1) + center["x"]);
12 p1["y"] = roundValue(radius * Math.sin(radAngle1) + center["y"]);
13 pt2["x"] = roundValue(radius * Math.cos(radAngle2) + center["y"]);
14 pt2["y"] = roundValue(radius * Math.sin(radAngle2) + center["y");
15 // Now some more code
16 }
多くの開発者がブランクを使いたくないです.これは有料です.ここでは意図的に空白を追加するのではなく、コードの一貫性を乱暴に遮断します.コードを実際に作成する過程で、どこに空白を入れるかを発見しやすくなります.これは美しくて分かりやすく、次のようになります.1 function getSomeAngle() {
2 // Some code here then
3 radAngle1 = Math.atan(slope(center, point1));
4 radAngle2 = Math.atan(slope(center, point2));
5
6 firstAngle = getStartAngle(radAngle1, point1, center);
7 secondAngle = getStartAngle(radAngle2, point2, center);
8
9 radAngle1 = degreesToRadians(firstAngle);
10 radAngle2 = degreesToRadians(secondAngle);
11
12 baseRadius = distance(point, center);
13 radius = baseRadius + (lines * y);
14
15 p1["x"] = roundValue(radius * Math.cos(radAngle1) + center["x"]);
16 p1["y"] = roundValue(radius * Math.sin(radAngle1) + center["y"]);
17
18 pt2["x"] = roundValue(radius * Math.cos(radAngle2) + center["y"]);
19 pt2["y"] = roundValue(radius * Math.sin(radAngle2) + center["y");
20 // Now some more code
21 }
4,
, 。 。 , “students id”, 。
1 function existsStudent(id, list) {
2 for(i = 0; i < list.length; i++) {
3 student = list[i];
4
5 // Get the student's id
6 thisId = student.getId();
7
8 if(thisId === id) {
9 return true;
10 }
11 }
12 return false;
13 }
5,ソースファイルに削除されたコードを残してはいけません.表示してもいいです.バージョン制御を使用すれば、前のバージョンのコードを簡単に見つけることができます.もし他の人があなたのコードを大々的に読んでいたら、削除するコードであることが分かります.これは本当に恨みます.
//function thisReallyHandyFunction() {
// someMagic();
// someMoreMagic();
// magicNumber = evenMoreMagic();
// return magicNumber;
//}
6,長すぎるコードがないでください.長いコードを見るのは大変です.特にコード自体の機能が小さいです.以下のとおりです
1 public static EnumMap getGroupCategoryDistribution(EnumMap sizes, int groups) {
2 EnumMap categoryGroupCounts = new EnumMap(Category.class);
3
4 for(Category cat : Category.values()) {
5 categoryGroupCounts.put(cat, getCategoryDistribution(sizes.get(cat), groups));
6 }
同前あえて70文字以内というわけではないですが、理想的な長さは120文字以内ということです.コードをインターネットに投稿すると、ユーザーが読むのは難しいです.
7,一つの機能(または関数内)にコード行が多すぎないようにしてください.
昔の同僚がVisual C++臭いと言っていましたが、関数内で10,000行以上のコードを持つことは許されません.コードの行数の上限がよく覚えていません.彼の言っていることが正しいかどうかは分かりませんが、彼の意見にはあまり賛成できません.もし一つの関数が50行を超えたら、どれぐらい大変ですか?知っていますか?また、ifループが延々と続いています.それに、マウスを転がして前と後ろのコードを合わせてください.私にとって35行以上のコードは理解するのが難しいです.私の提案はこの数字を超えると一つの関数コードを二つに分割することです.