実装の話

こんにちは、EC事業部のコウです。
日々実装作業に没頭し、Javaのクラス内を飛び回っています。
実装は、想定される画面や機能を実現するプロセスですが、
結果を得るためには、様々な方法があります。
では、どうやって実装方法の良し悪しを判断するのでしょうか?
その答えは、ソースコードのパフォーマンスにかかっています。
例えば、文字aが1万個連結された文字列を求める場合、
悪い例では以下のように書かれています。

String str = “”;

for(int i=0; i<10000; i++){

str += “a”;

}

この例では、文字列連結演算子を使用して、
10000回のループで文字列を連結しています。
しかし、文字列は不変オブジェクトであり、
文字列の連結が行われる時、新しい文字列オブジェクトが生成されます。
そのため、ループが回るたびにオブジェクト生成のオーバーヘッドが発生し、処理速度が低下します。
改善例では以下のように書かれています。

StringBuilder sb = new StringBuilder();

for(int i=0; i<10000; i++){

sb.append(“a”);

}

String str = sb.toString();

この例では、StringBuilderクラスを使用して、文字列を連結しています。
StringBuilderクラスは可変オブジェクトであり、
文字列を追加するたびに、既存のオブジェクトに追加していくため、
オブジェクト生成のオーバーヘッドを抑えることができます。
そのため、処理速度が向上します。
最後にtoString()メソッドを使用して、StringBuilderオブジェクトを文字列に変換しています。

この例では、文字列が比較的短いため、使用メモリの違いはそれほど大きくありません。
しかし、文字列が長くなると、使用メモリの違いも大きくなる可能性があります。

業務での実装は、想定された画面や機能を作成するだけでなく、
大量の計算に基づいて、ソースコードからパフォーマンスを最適化することが必要です。
そのため、優れたソースコードを作成するには、事前に要件を十分に理解することが不可欠です。
実装方法の選択は、使用メモリや処理速度などのパフォーマンスに大きな影響を与えるため、慎重に検討する必要があります。

まあ、現時点はまだプログラミングの経験が浅いため、とりあえず設計通りに実装することが優先でしょう。

ただし、余裕がある場合には、パフォーマンスの観点から改善点を検討することも大切です。ですが、パフォーマンスにこだわりすぎるあまり、コードの可読性や保守性を犠牲にすることは避けるべきです。バランスを考えながら、優れたソースコードを作成することが求められます。

今回の新人ブログはここまでです。いかがでしょうか。
次の投稿は最終回でございます。

引き続きよろしくお願いいたします。