コラム

【技術情報配信】コード改善の習慣

しばらくぶりの技術情報配信です。
さっそくですが、、
コーディングに際して「動いているからOK」で終わらせてませんか?
少し立ち止まり、
 ・より良いロジックはないか?
 ・可読性に問題ないか?
といった観点で見直すことにより皆が幸せになります。
「現時点でのベストなコードになっているか?」を意識することが大切です。

以下、極端な例ですがコード改善のイメージです。

ケース1:可読性
[改善前]
// 3値から最大値を見つける
int findMax(int a, int b, int c) {
int max;
if (a > b) {
if (a > c) {
max = a;
} else {
max = c;
}
} else {
if (b > c) {
max = b;
} else {
max = c;
}
}
return max;
}
[改善後]
int findMax(int value1, int value2, int value3) {
int maxValue = value1;

if (value2 > maxValue) {
maxValue = value2;
}

if (value3 > maxValue) {
maxValue = value3;
}

return maxValue;
}

ケース2:機能向上
[改善前]
// 配列から特定の値を探す
int findValue(int arr[], int size, int target) {
for (int i = 0; i < size; i++) { if (arr[i] == target) { return i; // 見つかった位置を返す } } // 値が見つからなかった場合は -1 を返す return -1; } [改善後] 二分探索としてみました(ソート済み前提) int findIndexByBinarySearch(const int* const sortedArray, int length, int targetValue) { int low = 0; int high = length - 1; while (low <= high) { int midIndex = low + (high - low) / 2; if (sortedArray[midIndex] == targetValue) { return midIndex; } else if (sortedArray[midIndex] < targetValue) { // 中央値よりターゲット値が大きい場合、下限を更新 low = midIndex + 1; } else { // 中央値よりターゲット値が小さい場合、上限を更新 high = midIndex - 1; } } // 値が見つからなかった場合は -1 を返す return -1; } このように、  ・可読性  ・拡張性  ・ロジックの最適化 といった観点で改善を意識することでコードはより良くなります。 ケース2に関しては検索対象のデータサイズが大きい場合は効率的なアルゴリズムが必須になってきます。 という感じですが何か伝わったでしょうか。 コーディングの際は「動けばいい」ではなく、許される範囲で積極的に改善する習慣を持ちましょう。 【許される範囲】というのをお忘れなく。(大事なので2回言いました)  ※伝えたいのはコードの内容ではなく、   こんな感じで改善できることがありますよということです。  ※コード間違っていたらご指摘ください。(コンパイルもしてません。。)