責任持てないし、副作用もわからんのだからコピペするな!と思っても禁止できないのがコピペです。限られた条件下ではコピペが現実解になってしまうこともあり、事態は深刻です。
どうやら最近、流行っているのが「禁止できないんだからコピペされても良いようなコードを書こう」という考え方です。コピペ・セーフティー・コーディングとでも申しましょうか。
私は普段、リファクタリング目的のためにオブジェクトのスコープを徹底的に狭くしているのですが、割とコピペしやすいそうで、他の方のコードにも使われていました。
int isValid = true; // ある処理のブロック { HRESULT result; result = OKorNoReturnedFunction(); if (!result) { isValid = false; } // 何か処理 } // 別の処理のブロック { // 上で失敗してたらなにもしないとかなんとか if (isValid) { int someLocalVar; // 決して表には出ない変数 } } // コピペするときはブロック単位で見る // このとき、自分のブロックの外側のスコープにあるオブジェクトにのみ注意すればいい // この例では isValid 変数、 result はスコープ外なので見る必要ない
次なるステップはテンプレートなんかを使ったメタプログラミングです。がんばります。
Contributions