行を分割するのではなく、80 文字を超える行を書かないようにする必要があります。
- 条件を変換してコードをカプセル化することで、インデントを最小限に抑えるようにしてください。
Linus Torvalds: 3 つ以上のレベルのインデントが必要な場合は、いずれにせよ失敗です
。プログラムを修正する必要があります。
これには、コードをはるかに読みやすくするという副作用もあります。さらに、条件は、カプセル化した他のものを他の場所で使用する準備ができているということです。
bool encapsulatedLongCondition() // Add some parameters
{
if (!condition1)
return false;
if (!condition2)
return false;
// ... (Other conditions)
return true;
}
if (encapsulatedLongCondition())
{
// ... (Call some methods, try not to introduce deeper if/loop levels!)
}
ブール代数を使用して条件を単純化し、条件と戻り値を逆にすると、非常に役立ちます。:-)
参照:このアルゴリズムを単純化できますか?
参照 2: C# のリファクタリングには、これを支援する機能があります。;-)
- 型定義を使用し、長い名前を避けるようにしてください
簡単な例として、別のコンテナーでより長い名前を持つ typedef を使用せずに Days を使用する時間を想像してみてください。
struct Day
{
// Some data
};
struct Event
{
// Some data
};
typedef list<Event> Events;
typedef map<Day, Event> Days;
// Some other container that would else be long...
- ... (行が長い理由を分析し、その解決策を見つけてください)
一般的なアイデアが得られることを願っています。これにより、汚い改行を思い付く必要がなくなります。;-)
長い行が発生する唯一の場所は、関数のプロトタイプまたはそれらを呼び出すときです。そこでは、最後の可能なコンマの後で改行して次の行に進む必要があります。それぞれの後にそれを行い、複数の行を無駄にしてスクロールを肥大化し、関数を目立たせるのではなく...これらの長い行を頻繁に目にする場合は、関数名の前の行に戻り値の型を配置できます。
void longFunctionName(ParameterType1 parameter1, ParameterType2 parameter2,
ParameterType3 parameter3, ParameterType4 parameter4)