コードの清書 改行
概要
横に長すぎるコードは、
視野の外にコードがはみ出てしまい、
とても読みづらくなります。
改行をつかって、
フルスクリーンのエディタの半分、
出来れば三分の一までにコードの
長さを抑えると、
余計な目の移動が抑えられます。
関数の仮引数
不適切な例
以下の例は横に長いPythonの関数定義です。
このままでも悪くありませんが、少し見づらいです。
class CssRule:
# プロパティ代入する形式的コンストラクター
def __init__(self, target : str, content : Dict[str, str]):
self.target = target
self.content = content
望ましい例
このような場合、縦にインデントをそろえます。
引数名、引数型、(ある場合は)既定値、が
縦に整列するようにします。
class CssRule:
# プロパティ代入する形式的コンストラクター
def __init__(
self,
target : str,
content : Dict[str, str]
):
self.target = target
self.content = content
関数の実引数
不適切な例
実引数の呼び出し時も、
以下のように、横に長すぎるコードが散見されます。
以下の例は、Pythonのコードです。
with open(file=path, mode="a", encoding=encoding) as text_file:
text_file.write("A")
望ましい例
縦に実引数をそろえることで、
視界の範囲内にコードを収めることができます。
with open(
file = path,
mode = "a",
encoding = encoding
) as text_file:
text_file.write("A")
三項演算子チェーン(条件前置型)
不適切な例
以下の例は、TypeScriptのコードです。
三項演算子のチェーンが、
横に伸びすぎています。
const x = false ? "A" : false ? "B" : "C"
望ましい例
以下のように、適切な位置で改行して、
読みやすくすべきです。
const x = false ? "A" :
false ? "B" :
"C"
三項演算子チェーン(条件後置型)
不適切な例
Pythonの三項演算子のチェーンのコードを
お見せします。
これも、長すぎるコードが1行にまとめられています。
x = 100 if False else 10 if False else 1 if False else 0
望ましい例
x = 100 if False \
else 10 if False \
else 1 if False \
else 0
メソッドチェーン
不適切な例
C#のメソッドチェーンのコードを題材にします。
いくつものメソッドを
すべて1行に収めようとして、
見にくくなっているパターンです。
var oddsFrom_1_To_100 = Enumerable.Range(1,100).Filter(element => element % 2 == 1).ToArray()
望ましい例
var oddsFrom_1_To_100 = Enumerable.Range(1,100)
.Filter(element => element % 2 == 1)
.ToArray()
パイプラインチェーン
不適切な例
以下のコードはPowerShellのパイプラインチェーンです。
長いパイプラインを
すべて1行に収めようとして、
読みにくくなっています。
1..100|Where-Object{$_ % 2 -eq 1}|Where-Object{$_ % 3 -ne 0}|ForEach-Object{$_ * $_}
望ましい例
無理せず、パイプラインごとに改行しましょう。
1..100|
Where-Object{$_ % 2 -eq 1}|
Where-Object{$_ % 3 -ne 0}|
ForEach-Object{$_ * $_}