KJMAN678 / good_bad_codes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

良いコード、悪いコードで学ぶ設計入門 の写経 + Python / Rust化 をやる

サンプルコード

----- 以下、オリジナルの文章 ------

サンプルコード対応表

本文記載のサンプルコード一覧です。

一部のソースコードは、コンパイルを通すために、本文にはないコードを追加しております。 また、一部の極めて小さなコードは、サンプルコードとして用意しておりません。

ご了承ください。

1章 悪しき構造の弊害を知覚する

本文のリスト番号 対応ファイル
1.1 src/chapter01_failuredesigndigest/technicalname/MemoryStateManager.java
1.2 src/chapter01_failuredesigndigest/numberingname/Class001.java
1.3 src/chapter06_conditionbranch/earlyreturn/v1/NestedLogic.java
1.5 src/chapter01_failuredesigndigest/dataclass/ContractAmount.java
1.6 src/chapter01_failuredesigndigest/dataclass/ContractManager.java

2章 設計の初歩

本文のリスト番号 対応ファイル
2.1 src/chapter02_designfirststep/damage/v1/DamageLogic.java
2.2 src/chapter02_designfirststep/damage/v2/DamageLogic.java
2.3 src/chapter02_designfirststep/damage/v3/DamageLogic.java
2.4, 2.5 src/chapter02_designfirststep/damage/v4/DamageLogic.java
2.6, 2.7, 2.8 src/chapter02_designfirststep/hitpoint/v1/HitPointLogic.java
2.9 src/chapter02_designfirststep/hitpoint/v2/HitPoint.java

3章 クラス設計 ―すべてにつながる設計の基盤―

本文のリスト番号 対応ファイル
3.18 src/chapter03_fundamentalofoop/Money.java
3.19 src/chapter03_fundamentalofoop/Money.rb
3.20 src/chapter03_fundamentalofoop/Money.js

4章 不変の活用 ―安定動作を構築する―

本文のリスト番号 対応ファイル
4.1 src/chapter04_immutable/reassigning/v1/DamageLogic.java
4.3 src/chapter04_immutable/reassigning/v2/DamageLogic.java
4.4 src/chapter04_immutable/finalparam/v1/MutableParamLogic.java
4.5 src/chapter04_immutable/finalparam/v2/ImmutableParamLogic.java
4.6 src/chapter04_immutable/sideeffect/v1/AttackPower.java
4.7 src/chapter04_immutable/sideeffect/v1/Weapon.java
4.8, 4.9, 4.11 src/chapter04_immutable/sideeffect/v1/ProcessLogic.java
4.13 src/chapter04_immutable/sideeffect/v2/AttackPower.java
4.14, 4.17 src/chapter04_immutable/sideeffect/v2/ProcessLogic.java
4.18 src/chapter04_immutable/sideeffect/v3/AttackPower.java
4.19, 4.20, 4.22 src/chapter04_immutable/sideeffect/v3/ProcessLogic.java
4.21 src/chapter04_immutable/sideeffect/v3/Weapon.java
4.24 src/chapter04_immutable/mutator/v1/
4.25 src/chapter04_immutable/mutator/v2/

5章 低凝集 ―バラバラになったモノたち―

本文のリスト番号 対応ファイル
5.1 src/chapter05_lowcohesionseries/staticmiss/OrderManager.java
5.2 src/chapter05_lowcohesionseries/staticmiss/OrderLogic.java
5.3 src/chapter05_lowcohesionseries/staticmiss/PaymentManager.java
5.4 src/chapter05_lowcohesionseries/gift/v1/GiftPoint.java
5.5, 5.6 src/chapter05_lowcohesionseries/gift/v1/GiftLogic.java
5.7 src/chapter05_lowcohesionseries/gift/v2/GiftPoint.java
5.8, 5.9 src/chapter05_lowcohesionseries/gift/v2/GiftLogic.java
5.10 src/chapter05_lowcohesionseries/common/Common.java
5.12 src/chapter05_lowcohesionseries/common/AmountIncludingTax.java
5.13 src/chapter05_lowcohesionseries/crosscutting/LoggerLogic.java
5.14 src/chapter05_lowcohesionseries/location/v1/ActorManager.java
5.17 src/chapter05_lowcohesionseries/location/v1/DiscountManager.java
5.18 src/chapter05_lowcohesionseries/location/v2/Location.java
5.20 src/chapter05_lowcohesionseries/outkeyword/RecoverCompletely.cs
5.21 src/chapter05_lowcohesionseries/outkeyword/HitPoint.cs
5.23 src/chapter05_lowcohesionseries/magic/v1/RecoverMagicPointMethod.java
5.24 src/chapter05_lowcohesionseries/magic/v1/Common.java
5.25 src/chapter05_lowcohesionseries/magic/v1/Util.java
5.26 src/chapter05_lowcohesionseries/magic/v2/RegularPrice.java
5.27 src/chapter05_lowcohesionseries/magic/v2/DiscountedPrice.java
5.29 src/chapter05_lowcohesionseries/magic/v2/MagicPoint.java
5.31 src/chapter05_lowcohesionseries/methodchain/Equipments.java

6章 条件分岐 ―迷宮化した分岐処理を解きほぐす技法―

本文のリスト番号 対応ファイル
6.1 src/chapter06_conditionbranch/earlyreturn/v1/NestedLogic.java
6.3 src/chapter06_conditionbranch/earlyreturn/v2/NestedLogic.java
6.4 src/chapter06_conditionbranch/earlyreturn/v3/NestedLogic.java
6.5 src/chapter06_conditionbranch/earlyreturn/v4/NestedLogic.java
6.6 src/chapter06_conditionbranch/earlyreturn/v5/NestedLogic.java
6.7 src/chapter06_conditionbranch/elsekeyword/v1/ElseLogic.java
6.8 src/chapter06_conditionbranch/elsekeyword/v2/ElseLogic.java
6.9 src/chapter06_conditionbranch/elsekeyword/v3/ElseLogic.java
6.10 src/chapter06_conditionbranch/switchcase/magic/MagicType.java
6.11, 6.12, 6.13 src/chapter06_conditionbranch/switchcase/magic/v1/MagicManager.java
6.14, 6.15, 6.16, 6.17 src/chapter06_conditionbranch/switchcase/magic/v2/MagicManager.java
6.18 src/chapter06_conditionbranch/switchcase/magic/v3/Magic.java
6.19 src/chapter06_conditionbranch/switchcase/shape/v1/Rectangle.java
6.19 src/chapter06_conditionbranch/switchcase/shape/v1/Circle.java
6.22 src/chapter06_conditionbranch/switchcase/shape/v1/ShowAreaLogic.java
6.23 src/chapter06_conditionbranch/switchcase/shape/v2/Shape.java
6.24 src/chapter06_conditionbranch/switchcase/shape/v2/Rectangle.java
6.24 src/chapter06_conditionbranch/switchcase/shape/v2/Circle.java
6.28 src/chapter06_conditionbranch/switchcase/magic/v4/Magic.java
6.29 src/chapter06_conditionbranch/switchcase/magic/v4/Fire.java
6.30 src/chapter06_conditionbranch/switchcase/magic/v4/Shiden.java
6.31 src/chapter06_conditionbranch/switchcase/magic/v4/HellFire.java
6.32, 6.33 src/chapter06_conditionbranch/switchcase/magic/v4/MagicSwitch.java
6.34 src/chapter06_conditionbranch/switchcase/magic/v4/MagicSwitchV2.java
6.37 src/chapter06_conditionbranch/switchcase/magic/v5/Magic.java
6.38 src/chapter06_conditionbranch/switchcase/magic/v5/Fire.java
6.39 src/chapter06_conditionbranch/switchcase/magic/v5/Shiden.java
6.40 src/chapter06_conditionbranch/switchcase/magic/v5/HellFire.java
6.41, 6.42 src/chapter06_conditionbranch/policy/v1/CustomerRankLogic.java
6.43 src/chapter06_conditionbranch/policy/v2/ExcellentCustomerRule.java
6.44 src/chapter06_conditionbranch/policy/v2/GoldCustomerPurchaseAmountRule.java
6.45 src/chapter06_conditionbranch/policy/v2/PurchaseFrequencyRule.java
6.46 src/chapter06_conditionbranch/policy/v2/ReturnRateRule.java
6.47 src/chapter06_conditionbranch/policy/v2/ExcellentCustomerPolicy.java
6.48 src/chapter06_conditionbranch/policy/v2/CallExcellentCustomerPolicyLogic.java
6.49 src/chapter06_conditionbranch/policy/v2/GoldCustomerPolicy.java
6.50 src/chapter06_conditionbranch/policy/v2/SilverCustomerPolicy.java
6.51 src/chapter06_conditionbranch/hotelrate/v1/HotelRates.java
6.52 src/chapter06_conditionbranch/hotelrate/v1/RegularRates.java
6.53 src/chapter06_conditionbranch/hotelrate/v1/PremiumRates.java
6.54 src/chapter06_conditionbranch/hotelrate/v1/TypeCheckLogic.java
6.55 src/chapter06_conditionbranch/hotelrate/v2/HotelRates.java
6.56 src/chapter06_conditionbranch/hotelrate/v2/RegularRates.java
6.57 src/chapter06_conditionbranch/hotelrate/v2/PremiumRates.java
6.58 src/chapter06_conditionbranch/hotelrate/v2/CallHotelRatesLogic.java
6.60 src/chapter06_conditionbranch/flagvariable/v1/FlagLogic.java
6.61 src/chapter06_conditionbranch/flagvariable/v1/SelectorLogic.java
6.62 src/chapter06_conditionbranch/flagvariable/v2/DamageLogic.java
6.63 src/chapter06_conditionbranch/flagvariable/v3/Damage.java
6.64 src/chapter06_conditionbranch/flagvariable/v3/HitPointDamage.java
6.64 src/chapter06_conditionbranch/flagvariable/v3/MagicPointDamage.java
6.65 src/chapter06_conditionbranch/flagvariable/v3/DamageType.java
6.65 src/chapter06_conditionbranch/flagvariable/v3/ApplyDamageLogic.java

7章 コレクション ―ネストを解消する構造化技法―

本文のリスト番号 対応ファイル
7.1 src/chapter07_collection/prison/v1/PrisonLogic.java
7.2 src/chapter07_collection/prison/v2/PrisonLogic.java
7.3 src/chapter07_collection/earlycontinue/v1/Logic.java
7.4 src/chapter07_collection/earlycontinue/v2/Logic.java
7.5 src/chapter07_collection/earlycontinue/v3/Logic.java
7.6 src/chapter07_collection/earlybreak/v1/Logic.java
7.7 src/chapter07_collection/earlybreak/v2/Logic.java
7.8 src/chapter07_collection/party/v1/FieldManager.java
7.10 src/chapter07_collection/party/v1/BattleManager.java
7.14 src/chapter07_collection/party/v2/Party.java

8章 密結合 ―絡まって解きほぐせない構造―

本文のリスト番号 対応ファイル
8.1 src/chapter08_tightcoupling/discount/v1/DiscountManager.java
8.1 src/chapter08_tightcoupling/discount/v1/Product.java
8.1 src/chapter08_tightcoupling/discount/v1/ProductDiscount.java
8.2 src/chapter08_tightcoupling/discount/v1/SummerDiscountManager.java
8.3 src/chapter08_tightcoupling/discount/v2/DiscountLogic.java
8.4 src/chapter08_tightcoupling/discount/v3/RegularPrice.java
8.5 src/chapter08_tightcoupling/discount/v3/RegularDiscountedPrice.java
8.6 src/chapter08_tightcoupling/discount/v3/SummerDiscountedPrice.java
8.7 src/chapter08_tightcoupling/attack/bad/PhysicalAttack.java
8.8 src/chapter08_tightcoupling/attack/bad/FighterPhysicalAttack.java
8.9 src/chapter08_tightcoupling/attack/good/FighterPhysicalAttack.java
8.10 src/chapter08_tightcoupling/commonextend/v1/DiscountBase.java
8.13 src/chapter08_tightcoupling/commonextend/v1/RegularDiscount.java
8.14 src/chapter08_tightcoupling/commonextend/v2/DiscountBase.java
8.15 src/chapter08_tightcoupling/commonextend/v2/RegularDiscount.java
8.16 src/chapter08_tightcoupling/commonextend/v2/SummerDiscount.java
8.17 src/chapter08_tightcoupling/commonextend/v3/DiscountBase.java
8.18 src/chapter08_tightcoupling/util/v1/Util.java
8.19 src/chapter08_tightcoupling/util/v2/Reservation.java
8.20 src/chapter08_tightcoupling/util/v2/ViewCustomizing.java
8.21 src/chapter08_tightcoupling/util/v2/MailMagazineService.java
8.22 src/chapter08_tightcoupling/visibility/v1/HitPointRecovery.java
8.23 src/chapter08_tightcoupling/visibility/v1/PositiveFeelings.java
8.24 src/chapter08_tightcoupling/visibility/v1/BattleView.java
8.25 src/chapter08_tightcoupling/visibility/v2/PositiveFeelings.java
8.26 src/chapter08_tightcoupling/order/OrderService.java
8.27 src/chapter08_tightcoupling/selling/good/SellingPrice.java
8.28 src/chapter08_tightcoupling/selling/bad/SellingPrice.java
8.29 src/chapter08_tightcoupling/selling/good/SellingCommission.java
8.30 src/chapter08_tightcoupling/selling/good/DeliveryCharge.java
8.31 src/chapter08_tightcoupling/selling/good/ShoppingPoint.java
8.32 src/chapter08_tightcoupling/hugedata/Order.java

9章 設計の健全性をそこなうさまざまな悪魔たち

本文のリスト番号 対応ファイル
9.1 src/chapter09_unhealthycode/DeadCode.java
9.2 src/chapter09_unhealthycode/comic/ComicManager.java
9.3 src/chapter09_unhealthycode/comic/ReadingPoint.java
9.6, 9.7, 9.8 src/chapter09_unhealthycode/nullproblem/v1/Member.java
9.10 src/chapter09_unhealthycode/nullproblem/v1/ShowLogic.java
9.11 src/chapter09_unhealthycode/nullproblem/v2/Equipment.java
9.16 src/chapter09_unhealthycode/level/Level.java
9.17 src/chapter09_unhealthycode/level/MetaproLogic.java
9.19 src/chapter09_unhealthycode/usergenerate/User.java
9.20, 9.21 src/chapter09_unhealthycode/usergenerate/GenerateLogic.java

10章 名前設計 ―あるべき構造を見破る名前―

本文のリスト番号 対応ファイル
10.1 src/chapter10_namedesign/serviceusage/ServiceUsageFee.java
10.5 src/chapter10_namedesign/maxhitpoint/OriginalMaxHitPoint.java
10.6 src/chapter10_namedesign/maxhitpoint/CorrectedMaxHitPoint.java
10.8 src/chapter10_namedesign/insidelogicname/v1/Magic.java
10.9 src/chapter10_namedesign/insidelogicname/v2/Magic.java
10.11 src/chapter10_namedesign/orders/v1/Order.java
10.12 src/chapter10_namedesign/orders/v2/Order.java
10.13 src/chapter10_namedesign/product/v1/ProductInfo.java
10.14 src/chapter10_namedesign/product/v2/ProductDto.java
10.18 src/chapter10_namedesign/manager/MemberManager.java
10.19 src/chapter10_namedesign/gerund/Enemy.java
10.20 src/chapter10_namedesign/gerund/PartyItems.java
10.21 src/chapter10_namedesign/booleanmethod/v1/Common.java
10.22 src/chapter10_namedesign/booleanmethod/v2/Member.java

11章 コメント ―保守と変更の正確性を高める書き方―

本文のリスト番号 対応ファイル
11.2 src/chapter11_comment/v1/Member.java
11.3 src/chapter11_comment/v2/Member.java
11.5 src/chapter11_comment/v3/Member.java
11.6 src/chapter11_comment/v4/Member.java
11.7 src/chapter11_comment/Money.java

12章 メソッド(関数) ―良きクラスには良きメソッドあり―

本文のリスト番号 対応ファイル
12.1 src/chapter12_method/Person.java
12.2 src/chapter12_method/commandquery/ModifireLogic.java
12.3 src/chapter12_method/commandquery/CommandQueryLogic.java
12.4 src/chapter12_method/returnvalue/v1/Price.java
12.5 src/chapter12_method/returnvalue/v1/MoneysLogic.java
12.7 src/chapter12_method/returnvalue/v2/Price.java
12.8 src/chapter12_method/returnvalue/v2/MoneysLogic.java
12.9 src/chapter12_method/doublemeaning/v1/Location.java
12.10 src/chapter12_method/doublemeaning/v2/Location.java

14章 リファクタリング ―既存コードを成長に導く技―

本文のリスト番号 対応ファイル
14.1 src/chapter14_refactoring/webcomic/v1/PurchasePointPayment.java
14.2 src/chapter14_refactoring/webcomic/v2/PurchasePointPayment.java
14.3 src/chapter14_refactoring/webcomic/v3/PurchasePointPayment.java
14.4 src/chapter14_refactoring/webcomic/v4/PurchasePointPayment.java
14.5 src/chapter14_refactoring/webcomic/v5/PurchasePointPayment.java
14.6 src/chapter14_refactoring/webcomic/Customer.java
14.7 src/chapter14_refactoring/webcomic/v6/PurchasePointPayment.java
14.8 src/chapter14_refactoring/delivery/v1/DeliveryManager.java
14.9 src/chapter14_refactoring/delivery/v2/ShoppingCart.java
14.10 src/chapter14_refactoring/delivery/v2/Product.java
14.11 src/chapter14_refactoring/delivery/v2/DeliveryCharge.java
14.12 test/chapter14_refactoring/delivery/v3/DeliveryChargeTest.java
14.13 src/chapter14_refactoring/delivery/v3/DeliveryCharge.java
14.14 src/chapter14_refactoring/delivery/v4/DeliveryCharge.java
14.15 src/chapter14_refactoring/delivery/v5/ShoppingCart.java
14.16 src/chapter14_refactoring/delivery/v5/DeliveryManager.java
14.17 src/chapter14_refactoring/delivery/v5/DeliveryCharge.java
14.18 src/chapter14_refactoring/delivery/v6/ShoppingCart.java
14.19 src/chapter14_refactoring/delivery/v6/DeliveryCharge.java
14.20 src/chapter14_refactoring/delivery/v7/DeliveryCharge.java
14.21 src/chapter14_refactoring/delivery/v8/DeliveryCharge.java
14.22 src/chapter14_refactoring/delivery/v8/ShoppingCart.java

About


Languages

Language:Java 98.1%Language:C# 0.9%Language:Ruby 0.5%Language:JavaScript 0.5%