リーダブルコード実践 Vol.5
更なる改善
まだ改善の余地があるので、今までのポイントを総ざらいし、もっと読みやすくします。
/*
* 入荷と出荷が同時に呼び出されることはない。
*/
class RasManager {
function ReceiveGoods(goods_id, goods_num) {
if (goods_num < 1) return "1以上の数量を入力してください。";
if (!CommonFunction.ExistGoods(goods_id)) return "未登録の商品IDが入力されています。";
Warehouse.StoreOnGoods(goods_id, goods_num);
return "商品を入荷しました。";
}
function ShippingGoods(goods_id, goods_num, delivery_id) {
if (goods_num < 1) return "1以上の数量を入力してください。";
if (!CommonFunction.ExistGoods(goods_id)) return "未登録の商品IDが入力されています。";
if (!CommonFunction.ExistDeliveryOnAddress(delivery_id)) return "未登録の出荷先IDが入力されています。";
if (Warehouse.GoodsStockOfNum(goods_id) < goods_num) return "入力した商品は在庫不足のため出荷できません。";
Warehouse.DeliveryOnGoods(goods_id, goods_num, delivery_id);
return "商品を出荷しました。";
}
}
class Warehouse {
function StoreOnGoods(goods_id, goods_num) {
...
}
function DeliveryOnGoods(goods_id, goods_num, delivery_id) {
...
}
function GoodsStockOfNum(goods_id) {
...
}
}
class CommonFunction {
function ExistGoods(goods_id) {
...
}
function ExistDeliveryOnAddress(delivery_id) {
...
}
}
<改善したこと>
- 名前で何をするかわかるのでクラス・メソッドに関するコメントは削除しました。(RasManagerの補足コメントは残しています)
- RasManager.ReceiveGoods、RasManager.ShippingGoodsのif文を縦に整列するよう書き直しました。また、elseはなくても動作に変わりはないので削除しました。
以上で改善終了です。最初のコードと比べると、95行⇒45行にコード量が減り、名前で何をするかわかるようになりました。やはりムダなコメントがなくなるとスッキリして見やすいですね。
今回は見た目がメインの例題だったので、次回はロジックをメインにした例題にしたいと思います。
この記事が気に入ったらサポートをしてみませんか?