きれいでモジュラーコードを書く方法🤩👨💻
5982 ワード
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler
私はこれらの線を言っていなかったので、犯罪はありません.😶
用語
クリーンコード:読みやすい、簡単で、簡潔なコード.クリーンな生産品質コードは、ソフトウェア開発における協調と保守性にとって重要である.
モジュラーコード:関数とモジュールに論理的に分割されたコード.我々のコードをより組織化して、効率的で再利用できるようにするモジュラー生産品質コード.
モジュール:ファイル.モジュールは、コードを他のファイルにインポートすることができるファイルにそれらをカプセル化することによって再利用されるのを許します.
クリーンコードの記述
意味のある名前を使用します.
説明文を暗示して、型を暗示してください:Booleansのために、それが条件であることを明らかにするために、我々は
is_
またはhas_
で接頭辞をつけることができます.また、関数の動詞や変数の名詞を使用するように、音声の一部を使って型を暗示することもできます.age_list
とage
はages
とage
と区別するのがより簡単です.略語と単一の文字を避ける:我々はこれらの例外を我々のコードの視聴者に基づいて、それがカウンタと一般的な数学変数であるかどうかを決定することができます.
長い名前は説明的な名前と同じではありません:我々は記述的でなければなりませんが、関連する情報だけでなければなりません.例えば、良い関数名は、実装や非常に特別な用途についての詳細を含めずにうまくいくことを説明します.
適切に空白を使う.
一貫したインデントを使用してコードを整理します.標準では、インデントごとに4つのスペースを使用します.我々はテキストエディタでこれをデフォルトにすることができます.
私たちのコードをよく整理し、読みやすくするために空白の行と*別々のセクション.
あなたがPythonでコーディングしているなら、PEP 8スタイルガイドで与えられたガイドラインであるおよそ79文字にあなたの線を制限しようとします.多くの良いテキストエディタでは、79文字の制限がどこにあるかを示す微妙な線を表示する設定があります.
例えば、
我々はタスクの数を実行し、その実行時間に基づいて、各タスクを分類するプログラムを書いている想像してください.以下は、このプログラムの小さな断片です.
t = end_time - start # compute execution time
c = category(t) # get category of task
print('Task Duration: {} seconds, Category: {}'.format(t, c)
どのように我々はこのコードをきれいに見えることができますか?次の命名の変更は、このコードをクリーンにすることができます.
start
まで242479142に変更し、start_time
と一致させる.end_time
にt
に名前を変えます.execution_time
にcategory
に名前を変えます.categorize_task
にc
に名前を変えます.execution_time = end_time - start_time
category = categorize_task(execution_time)
print('Task Duration: {} seconds, Category: {}'.format(execution_time, category)
モジュールコードの記述
モジュールのコードを書くために以下のヒントに従ってください.
自分自身を繰り返すな!モジュール化により、コードの一部を再利用できます.関数またはループ内の反復コードを一般化し、統合します.
関数にコードを抽象化することは、それをより反復的にするだけでなく、記述的な関数名で読みやすさを改善します.私たちのコードは、論理を関数に抽象化するときにより読みやすくなることができますが、これをオーバーエンジニアすることが可能であり、あまりにも多くのモジュールを持っているので、我々は独自の判断を使用することができます.
インラインロジックの代わりに関数呼び出しを持つトレードオフがあります.もし私たちがあなたのコードを不必要な量の機能とモジュールに分割したならば、私たちがそれが価値があるためにあまりに小さい何かのために実装詳細を見ることを望むならば、我々は至る所で跳ねなければなりません.より多くのモジュールを作ることは、必ずしも効果的なモジュール化に終わりません.
我々が書く各々の機能は、1つのことをすることに集中しなければなりません.機能が複数のことをしているなら、一般化と再利用をより困難になる.一般に、あなたの関数名に“AND”があるなら、リファクタリングを考慮してください.
一般的な関数の任意の変数名は、実際にコードを読みやすくすることができます.
可能な場合には3つ以上の引数を使用しないようにしてください.これは難しい規則ではなく、多くのパラメータを使用することがより適切であるときがあります.しかし、多くの場合、より少ない引数を使うのはより効果的です.我々のコードを簡素化し、より効率的にするモジュール化を覚えておいてください.もし、私たちの関数がたくさんのパラメータを持っているなら、私たちは、どのようにこれを分割しているかを再考したいかもしれません.
例えば、
我々は、我々は3つの異なる方法でカーブテストスコアのリストがあります.私たちは、あまりにも難しかったテストをしたり、少し不公平だった質問を与えた教育者であると仮定します(私たちの大学の試験官が時々行うように).それで、我々は学生の得点を押し上げる方法を理解することに決めます.
s = [88, 92, 79, 93, 85]
print(sum(s)/len(s))
s1 = []
for x in s:
s1.append(x + 5)
print(sum(s1)/len(s1))
s2 = []
for x in s:
s2.append(x + 10)
print(sum(s2)/len(s2))
s3 = []
for x in s:
s3.append(x ** 0.5 * 10)
print(sum(s3)/len(s3))
# difficult to understand and pretty repetitive
最初の2つの方法については、それぞれのスコアとそれぞれのスコアに10ポイントに5ポイントのフラットカーブを追加します.第3の方法では,平方根曲線を適用し,各スコアの平方根を求め,10倍する.たった今、このコードが何であるかについて理解して、かなり繰り返しているように見えます.
今、我々はコードを変更することができますヒントに従って
import math
import numpy as np
def flat_curve(arr, n):
return [i + n for i in arr]
def square_root_curve(arr):
return [math.sqrt(i) * 10 for i in arr]
test_scores = [88, 92, 79, 93, 85]
curved_5 = flat_curve(test_scores, 5)
curved_10 = flat_curve(test_scores, 10)
curved_sqrt = square_root_curve(test_scores)
for score_list in test_scores, curved_5, curved_10, curved_sqrt:
print(np.mean(score_list))
# clean and modular
これは、クリーンでモジュラーコードの例です.結論
これらのヒントに従って、クリーンでモジュラーコードを記述します.
読書ありがとう!
お気軽にご提案ください.
あなたは私と接続することができます
Reference
この問題について(きれいでモジュラーコードを書く方法🤩👨💻), 我々は、より多くの情報をここで見つけました https://dev.to/prxtikk/how-to-write-clean-and-modular-code-1d87テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol