こんにちは、林です。
フリーランスのサーバサイドエンジニアとして案件に携わり、幾度もソースコードのリファクタをする機会に恵まれました。
今回はその中の一つを紹介し、クラス継承をすることでの改善案を提案させていただきます。
・課題
ある会社では商品データを扱っているが、扱う商品データは提携する各会社からデータ(APIやファイル等)が送られてくる。
各会社のデータフォーマットは異なっているため、データを整えDBに格納する必要がある。
・解決案
提携先の会社は今後増える可能性もあり、それぞれの提携先ごとにファイルのフォーマットも変更したいので当然実装も変える必要がある。
しかし、扱う商品データやデータの取り込みフローなどは共通となることが多いので、抽象クラスを作成して処理を共通化することをおススメする。
public abstract class AbstractImportData {
abstract public void parseData();
public void importData();
}
public class ImportDataCompanyA extends AbstractImportData {
public void parseData() {
// 実装します
}
}
public class ImportDataCompanyA extends AbstractImportData {
public void parseData() {
// 実装します
}
}
このようにすることで、共通化された処理とそれぞれの処理が分かれ、影響する範囲も分かりやすくなる。
コードのわかりやすさはそのままバグの発生を減らすことにもつながるので、ぜひ読みやすいコードを意識してほしい。
楽しいプログラムライフを。