├── .github └── workflows │ └── main.yml ├── .gitignore ├── Part 1 Good code ├── Chapter 1 Safety │ ├── Introduction.md │ ├── Item 1 Limit mutability.md │ ├── Item 10 Write unit tests.md │ ├── Item 2 Minimize the scope of variables.md │ ├── Item 3 Eliminate platform types as soon as possible.md │ ├── Item 4 Do not expose inferred types.md │ ├── Item 5 Specify your expectations on arguments and state.md │ ├── Item 6 Prefer standard errors to custom ones.md │ ├── Item 7 Prefer null or Failure result when the lack of result is possible.md │ ├── Item 8 Handle nulls properly.md │ └── Item 9 Close resources with use.md └── Chapter 2 Readability │ ├── Introduction.md │ ├── Item 11 Design for readability.md │ ├── Item 12 Operator meaning should be consistent with its function name.md │ ├── Item 13 Avoid returning or operating on Unit?.md │ ├── Item 14 Specify the variable type when it is not clear.md │ ├── Item 15 Consider referencing receivers explicitly.md │ ├── Item 16 Properties should represent state not behavior.md │ ├── Item 17 Consider naming arguments.md │ └── Item 18 Respect coding conventions.md ├── Part 2 Code design ├── Chapter 3 Reusability │ ├── Introduction.md │ ├── Item 19 Do not repeat knowledge.md │ ├── Item 20 Do not repeat common algorithms.md │ ├── Item 21 Use property delegation to extract common property patterns.md │ ├── Item 22 Use generics when implementing common algorithms.md │ ├── Item 23 Avoid shadowing type parameters.md │ ├── Item 24 Consider variance for generic types.md │ └── Item 25 Reuse between different platforms by extracting common modules.md ├── Chapter 4 Abstraction design │ ├── Introduction.md │ ├── Item 26 Each function should be written in terms of a single level of abstraction.md │ ├── Item 27 Use abstraction to protect code against changes.md │ ├── Item 28 Specify API stability.md │ ├── Item 29 Consider wrapping external API.md │ ├── Item 30 Minimize elements visibility.md │ ├── Item 31 Define contract with documentation.md │ └── Item 32 Respect abstraction contracts.md ├── Chapter 5 Object creation │ ├── Introduction.md │ ├── Item 33 Consider factory functions instead of constructors.md │ ├── Item 34 Consider a primary constructor with named optional arguments.md │ └── Item 35 Consider defining a DSL for complex object creation.md └── Chapter 6 Class design │ ├── Introduction.md │ ├── Item 36 Prefer composition over inheritance.md │ ├── Item 37 Use the data modifier to represent a bundle of data.md │ ├── Item 38 Use function types instead of interfaces to pass operations and actions.md │ ├── Item 39 Prefer class hierarchies to tagged classes.md │ ├── Item 40 Respect the contract of equals.md │ ├── Item 41 Respect the contract of hashCode.md │ ├── Item 42 Respect the contract of compareTo.md │ ├── Item 43 Consider extracting non-essential parts of your API into extensions.md │ └── Item 44 Avoid member extensions.md ├── Part 3 Efficiency ├── Chapter 7 Make it cheap │ ├── Introduction.md │ ├── Item 45 Avoid unnecessary object creation.md │ ├── Item 46 Use inline modifier for functions with parameters of functional types.md │ ├── Item 47 Consider using inline classes.md │ └── Item 48 Eliminate obsolete object references.md └── Chapter 8 Efficient collection processing │ ├── Introduction.md │ ├── Item 49 Prefer Sequence for big collections with more than one processing step.md │ ├── Item 50 Limit the number of operations.md │ ├── Item 51 Consider Arrays with primitives for performance-critical processing.md │ └── Item 52 Consider using mutable collections.md ├── README.md ├── SUMMARY.md ├── assets ├── chapter1 │ ├── chapter1-1.png │ ├── chapter1-2.png │ └── chapter1-3.png ├── chapter2 │ ├── chapter2-1.png │ └── chapter2-2.png ├── chapter3 │ ├── chapter3-1.png │ ├── chapter3-2.png │ ├── chapter3-3.png │ ├── chapter3-4.png │ ├── chapter3-5.png │ ├── chapter3-6.png │ ├── chapter3-7.png │ ├── chapter3-8.png │ └── chapter3-9.png ├── chapter4 │ ├── chapter4-1.png │ ├── chapter4-2.png │ ├── chapter4-3.png │ ├── chapter4-4.png │ ├── chapter4-5.png │ ├── chapter4-6.png │ ├── chapter4-7.png │ ├── chapter4-8.png │ └── chapter4-9.png ├── chapter5 │ ├── chapter5-1.png │ ├── chapter5-2.png │ └── chapter5-3.png ├── chapter6 │ ├── chapter6-1.png │ ├── chapter6-2.png │ ├── chapter6-3.png │ ├── chapter6-4.png │ └── chapter6-5.png ├── chapter7 │ ├── chapter7-1.png │ └── chapter7-2.png └── chapter8 │ ├── chapter8-1.png │ ├── chapter8-2.png │ ├── chapter8-3.png │ ├── chapter8-4.png │ ├── chapter8-5.png │ ├── chapter8-6.png │ └── chapter8-7.png ├── docs ├── .github │ └── workflows │ │ └── main.yml ├── Part 1 Good code │ ├── Chapter 1 Safety │ │ ├── Introduction.md │ │ ├── Item 1 Limit mutability.md │ │ ├── Item 10 Write unit tests.md │ │ ├── Item 2 Minimize the scope of variables.md │ │ ├── Item 3 Eliminate platform types as soon as possible.md │ │ ├── Item 4 Do not expose inferred types.md │ │ ├── Item 5 Specify your expectations on arguments and state.md │ │ ├── Item 6 Prefer standard errors to custom ones.md │ │ ├── Item 7 Prefer null or Failure result when the lack of result is possible.md │ │ ├── Item 8 Handle nulls properly.md │ │ └── Item 9 Close resources with use.md │ └── Chapter 2 Readability │ │ ├── Introduction.md │ │ ├── Item 11 Design for readability.md │ │ ├── Item 12 Operator meaning should be consistent with its function name.md │ │ ├── Item 13 Avoid returning or operating on Unit?.md │ │ ├── Item 14 Specify the variable type when it is not clear.md │ │ ├── Item 15 Consider referencing receivers explicitly.md │ │ ├── Item 16 Properties should represent state not behavior.md │ │ ├── Item 17 Consider naming arguments.md │ │ └── Item 18 Respect coding conventions.md ├── Part 2 Code design │ ├── Chapter 3 Reusability │ │ ├── Introduction.md │ │ ├── Item 19 Do not repeat knowledge.md │ │ ├── Item 20 Do not repeat common algorithms.md │ │ ├── Item 21 Use property delegation to extract common property patterns.md │ │ ├── Item 22 Use generics when implementing common algorithms.md │ │ ├── Item 23 Avoid shadowing type parameters.md │ │ ├── Item 24 Consider variance for generic types.md │ │ └── Item 25 Reuse between different platforms by extracting common modules.md │ ├── Chapter 4 Abstraction design │ │ ├── Introduction.md │ │ ├── Item 26 Each function should be written in terms of a single level of abstraction.md │ │ ├── Item 27 Use abstraction to protect code against changes.md │ │ ├── Item 28 Specify API stability.md │ │ ├── Item 29 Consider wrapping external API.md │ │ ├── Item 30 Minimize elements visibility.md │ │ ├── Item 31 Define contract with documentation.md │ │ └── Item 32 Respect abstraction contracts.md │ ├── Chapter 5 Object creation │ │ ├── Introduction.md │ │ ├── Item 33 Consider factory functions instead of constructors.md │ │ ├── Item 34 Consider a primary constructor with named optional arguments.md │ │ └── Item 35 Consider defining a DSL for complex object creation.md │ └── Chapter 6 Class design │ │ ├── Introduction.md │ │ ├── Item 36 Prefer composition over inheritance.md │ │ ├── Item 37 Use the data modifier to represent a bundle of data.md │ │ ├── Item 38 Use function types instead of interfaces to pass operations and actions.md │ │ ├── Item 39 Prefer class hierarchies to tagged classes.md │ │ ├── Item 40 Respect the contract of equals.md │ │ ├── Item 41 Respect the contract of hashCode.md │ │ ├── Item 42 Respect the contract of compareTo.md │ │ ├── Item 43 Consider extracting non-essential parts of your API into extensions.md │ │ └── Item 44 Avoid member extensions.md ├── Part 3 Efficiency │ ├── Chapter 7 Make it cheap │ │ ├── Introduction.md │ │ ├── Item 45 Avoid unnecessary object creation.md │ │ ├── Item 46 Use inline modifier for functions with parameters of functional types.md │ │ ├── Item 47 Consider using inline classes.md │ │ └── Item 48 Eliminate obsolete object references.md │ └── Chapter 8 Efficient collection processing │ │ ├── Introduction.md │ │ ├── Item 49 Prefer Sequence for big collections with more than one processing step.md │ │ ├── Item 50 Limit the number of operations.md │ │ ├── Item 51 Consider Arrays with primitives for performance-critical processing.md │ │ └── Item 52 Consider using mutable collections.md ├── assets │ ├── chapter1 │ │ ├── chapter1-1.png │ │ ├── chapter1-2.png │ │ └── chapter1-3.png │ ├── chapter2 │ │ ├── chapter2-1.png │ │ └── chapter2-2.png │ ├── chapter3 │ │ ├── chapter3-1.png │ │ ├── chapter3-2.png │ │ ├── chapter3-3.png │ │ ├── chapter3-4.png │ │ ├── chapter3-5.png │ │ ├── chapter3-6.png │ │ ├── chapter3-7.png │ │ ├── chapter3-8.png │ │ └── chapter3-9.png │ ├── chapter4 │ │ ├── chapter4-1.png │ │ ├── chapter4-2.png │ │ ├── chapter4-3.png │ │ ├── chapter4-4.png │ │ ├── chapter4-5.png │ │ ├── chapter4-6.png │ │ ├── chapter4-7.png │ │ ├── chapter4-8.png │ │ └── chapter4-9.png │ ├── chapter5 │ │ ├── chapter5-1.png │ │ ├── chapter5-2.png │ │ └── chapter5-3.png │ ├── chapter6 │ │ ├── chapter6-1.png │ │ ├── chapter6-2.png │ │ ├── chapter6-3.png │ │ ├── chapter6-4.png │ │ └── chapter6-5.png │ ├── chapter7 │ │ ├── chapter7-1.png │ │ └── chapter7-2.png │ └── chapter8 │ │ ├── chapter8-1.png │ │ ├── chapter8-2.png │ │ ├── chapter8-3.png │ │ ├── chapter8-4.png │ │ ├── chapter8-5.png │ │ ├── chapter8-6.png │ │ └── chapter8-7.png ├── gitbook │ ├── fonts │ │ └── fontawesome │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ ├── gitbook-plugin-fontsettings │ │ ├── fontsettings.js │ │ └── website.css │ ├── gitbook-plugin-highlight │ │ ├── ebook.css │ │ └── website.css │ ├── gitbook-plugin-lunr │ │ ├── lunr.min.js │ │ └── search-lunr.js │ ├── gitbook-plugin-search │ │ ├── lunr.min.js │ │ ├── search-engine.js │ │ ├── search.css │ │ └── search.js │ ├── gitbook-plugin-sharing │ │ └── buttons.js │ ├── gitbook.js │ ├── images │ │ ├── apple-touch-icon-precomposed-152.png │ │ └── favicon.ico │ ├── style.css │ └── theme.js ├── index.html ├── part-1-good-code │ ├── chapter-1-safety │ │ ├── di-1-tiao-xian-zhi-ke-bian-xing-part-1-good-codechapter-1-safetyitem-1-limit-mutability.md.html │ │ ├── di-10-tiao-bian-xie-dan-yuan-ce-shi-part-1-good-codechapter-1-safetyitem-10-write-unit-tests.md.html │ │ ├── di-2-tiao-zui-xiao-hua-bian-liang-zuo-yong-yu-part-1-good-codechapter-1-safetyitem-2-minimize-the-sc.html │ │ ├── di-3-tiao-jin-kuai-xiao-chu-ping-tai-lei-xing-part-1-good-codechapter-1-safetyitem-3-eliminate-platf.html │ │ ├── di-4-tiao-bu-yao-ba-tui-duan-lei-xing-bao-lou-gei-wai-bu-part-1-good-codechapter-1-safetyitem-4-do-n.html │ │ ├── di-5-tiao-zai-can-shu-yu-zhuang-tai-shang-zhi-ding-ni-de-qi-wang-part-1-good-codechapter-1-safetyite.html │ │ ├── di-6-tiao-jin-ke-neng-shi-yong-biao-zhun-ku-zhong-ti-gong-de-yi-chang-part-1-good-codechapter-1-safe.html │ │ ├── di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.html │ │ ├── di-8-tiao-zheng-que-di-chu-li-null-zhi-part-1-good-codechapter-1-safetyitem-8-handle-nulls-properly..html │ │ ├── di-9-tiao-shi-yong-use-guan-bi-zi-yuan-part-1-good-codechapter-1-safetyitem-9-close-resources-with-u.html │ │ ├── index.html │ │ └── yin-yan-part-1-good-codechapter-1-safetyintroduction.md.html │ ├── chapter-2-readability │ │ ├── di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.html │ │ ├── di-12-tiao-cao-zuo-fu-de-han-yi-ying-yu-qi-han-shu-ming-yi-zhi-part-1-good-codechapter-2-readability.html │ │ ├── di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.html │ │ ├── di-14-tiao-zai-lei-xing-bu-ming-que-de-qing-kuang-xia-qing-xian-shi-zhi-ding-bian-liang-de-lei-xing.html │ │ ├── di-15-tiao-kao-lv-ming-que-zhi-ding-jie-shou-zhe-part-1-good-codechapter-2-readabilityitem-15-consid.html │ │ ├── di-16-tiao-shu-xing-ying-dai-biao-zhuang-tai-er-bu-shi-hang-wei-part-1-good-codechapter-2-readabilit.html │ │ ├── di-17-tiao-kao-lv-ming-ming-can-shu-part-1-good-codechapter-2-readabilityitem-17-consider-naming-arg.html │ │ ├── di-18-tiao-zun-zhong-bian-ma-gui-fan-part-1-good-codechapter-2-readabilityitem-18-respect-coding-con.html │ │ ├── index.html │ │ └── yin-yan-part-1-good-codechapter-2-readabilityintroduction.md.html │ └── index.html ├── part-2-code-design │ ├── chapter-3-reusability │ │ ├── index.html │ │ ├── introduction-part-2-code-design-chapter-3-reusability-introduction.md.html │ │ ├── item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.html │ │ ├── item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.html │ │ ├── item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.html │ │ ├── item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.html │ │ ├── item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.html │ │ ├── item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.html │ │ └── item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.html │ ├── chapter-4-abstraction-design │ │ ├── index.html │ │ ├── introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.html │ │ ├── item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.html │ │ ├── item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.html │ │ ├── item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.html │ │ ├── item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.html │ │ ├── item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.html │ │ ├── item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.html │ │ └── item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.html │ ├── chapter-5-object-creation │ │ ├── index.html │ │ ├── introduction-part-2-code-design-chapter-5-object-creation-introduction.md.html │ │ ├── item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.html │ │ ├── item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.html │ │ └── item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.html │ ├── chapter-6-class-design │ │ ├── index.html │ │ ├── introduction-part-2-code-design-chapter-6-class-design-introduction.md.html │ │ ├── item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.html │ │ ├── item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.html │ │ ├── item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.html │ │ ├── item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.html │ │ ├── item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.html │ │ ├── item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.html │ │ ├── item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.html │ │ ├── item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.html │ │ └── item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.html │ └── index.html ├── part-3-efficiency │ ├── chapter-7-make-it-cheap │ │ ├── index.html │ │ ├── introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.html │ │ ├── item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.html │ │ ├── item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.html │ │ ├── item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.html │ │ └── item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.html │ ├── chapter-8-efficient-collection-processing │ │ ├── di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.html │ │ ├── di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.html │ │ ├── di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.html │ │ ├── index.html │ │ ├── introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.html │ │ └── item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.html │ └── index.html └── search_index.json ├── part-1-good-code ├── README.md ├── chapter-1-safety │ ├── README.md │ ├── di-1-tiao-xian-zhi-ke-bian-xing-part-1-good-codechapter-1-safetyitem-1-limit-mutability.md.md │ ├── di-10-tiao-bian-xie-dan-yuan-ce-shi-part-1-good-codechapter-1-safetyitem-10-write-unit-tests.md.md │ ├── di-2-tiao-zui-xiao-hua-bian-liang-zuo-yong-yu-part-1-good-codechapter-1-safetyitem-2-minimize-the-sc.md │ ├── di-3-tiao-jin-kuai-xiao-chu-ping-tai-lei-xing-part-1-good-codechapter-1-safetyitem-3-eliminate-platf.md │ ├── di-4-tiao-bu-yao-ba-tui-duan-lei-xing-bao-lou-gei-wai-bu-part-1-good-codechapter-1-safetyitem-4-do-n.md │ ├── di-5-tiao-zai-can-shu-yu-zhuang-tai-shang-zhi-ding-ni-de-qi-wang-part-1-good-codechapter-1-safetyite.md │ ├── di-6-tiao-jin-ke-neng-shi-yong-biao-zhun-ku-zhong-ti-gong-de-yi-chang-part-1-good-codechapter-1-safe.md │ ├── di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.md │ ├── di-8-tiao-zheng-que-di-chu-li-null-zhi-part-1-good-codechapter-1-safetyitem-8-handle-nulls-properly..md │ ├── di-9-tiao-shi-yong-use-guan-bi-zi-yuan-part-1-good-codechapter-1-safetyitem-9-close-resources-with-u.md │ └── yin-yan-part-1-good-codechapter-1-safetyintroduction.md.md └── chapter-2-readability │ ├── README.md │ ├── di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.md │ ├── di-12-tiao-cao-zuo-fu-de-han-yi-ying-yu-qi-han-shu-ming-yi-zhi-part-1-good-codechapter-2-readability.md │ ├── di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.md │ ├── di-14-tiao-zai-lei-xing-bu-ming-que-de-qing-kuang-xia-qing-xian-shi-zhi-ding-bian-liang-de-lei-xing.md │ ├── di-15-tiao-kao-lv-ming-que-zhi-ding-jie-shou-zhe-part-1-good-codechapter-2-readabilityitem-15-consid.md │ ├── di-16-tiao-shu-xing-ying-dai-biao-zhuang-tai-er-bu-shi-hang-wei-part-1-good-codechapter-2-readabilit.md │ ├── di-17-tiao-kao-lv-ming-ming-can-shu-part-1-good-codechapter-2-readabilityitem-17-consider-naming-arg.md │ ├── di-18-tiao-zun-zhong-bian-ma-gui-fan-part-1-good-codechapter-2-readabilityitem-18-respect-coding-con.md │ └── yin-yan-part-1-good-codechapter-2-readabilityintroduction.md.md ├── part-2-code-design ├── README.md ├── chapter-3-reusability │ ├── README.md │ ├── introduction-part-2-code-design-chapter-3-reusability-introduction.md.md │ ├── item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.md │ ├── item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.md │ ├── item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.md │ ├── item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.md │ ├── item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.md │ ├── item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.md │ └── item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.md ├── chapter-4-abstraction-design │ ├── README.md │ ├── introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.md │ ├── item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.md │ ├── item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.md │ ├── item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.md │ ├── item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.md │ ├── item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.md │ ├── item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.md │ └── item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.md ├── chapter-5-object-creation │ ├── README.md │ ├── introduction-part-2-code-design-chapter-5-object-creation-introduction.md.md │ ├── item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.md │ ├── item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.md │ └── item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.md └── chapter-6-class-design │ ├── README.md │ ├── introduction-part-2-code-design-chapter-6-class-design-introduction.md.md │ ├── item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.md │ ├── item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.md │ ├── item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.md │ ├── item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.md │ ├── item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.md │ ├── item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.md │ ├── item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.md │ ├── item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.md │ └── item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.md └── part-3-efficiency ├── README.md ├── chapter-7-make-it-cheap ├── README.md ├── introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.md ├── item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.md ├── item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.md ├── item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.md └── item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.md └── chapter-8-efficient-collection-processing ├── README.md ├── di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.md ├── di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.md ├── di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.md ├── introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.md └── item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.md /.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/.github/workflows/main.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .idea 3 | node_modules 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Introduction.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 7 Prefer null or Failure result when the lack of result is possible.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 7 Prefer null or Failure result when the lack of result is possible.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Introduction.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 11 Design for readability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 11 Design for readability.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 13 Avoid returning or operating on Unit?.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 13 Avoid returning or operating on Unit?.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md -------------------------------------------------------------------------------- /Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Introduction.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 19 Do not repeat knowledge.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 19 Do not repeat knowledge.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 20 Do not repeat common algorithms.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 20 Do not repeat common algorithms.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 21 Use property delegation to extract common property patterns.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 21 Use property delegation to extract common property patterns.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 22 Use generics when implementing common algorithms.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 22 Use generics when implementing common algorithms.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 23 Avoid shadowing type parameters.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 23 Avoid shadowing type parameters.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 24 Consider variance for generic types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 24 Consider variance for generic types.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 3 Reusability/Item 25 Reuse between different platforms by extracting common modules.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 3 Reusability/Item 25 Reuse between different platforms by extracting common modules.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Introduction.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 26 Each function should be written in terms of a single level of abstraction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 26 Each function should be written in terms of a single level of abstraction.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 27 Use abstraction to protect code against changes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 27 Use abstraction to protect code against changes.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 28 Specify API stability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 28 Specify API stability.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 29 Consider wrapping external API.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 29 Consider wrapping external API.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 30 Minimize elements visibility.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 30 Minimize elements visibility.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 31 Define contract with documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 31 Define contract with documentation.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 4 Abstraction design/Item 32 Respect abstraction contracts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 4 Abstraction design/Item 32 Respect abstraction contracts.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 5 Object creation/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 5 Object creation/Introduction.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 5 Object creation/Item 33 Consider factory functions instead of constructors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 5 Object creation/Item 33 Consider factory functions instead of constructors.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 5 Object creation/Item 34 Consider a primary constructor with named optional arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 5 Object creation/Item 34 Consider a primary constructor with named optional arguments.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 5 Object creation/Item 35 Consider defining a DSL for complex object creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 5 Object creation/Item 35 Consider defining a DSL for complex object creation.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Introduction.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 36 Prefer composition over inheritance.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 36 Prefer composition over inheritance.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 37 Use the data modifier to represent a bundle of data.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 37 Use the data modifier to represent a bundle of data.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 38 Use function types instead of interfaces to pass operations and actions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 38 Use function types instead of interfaces to pass operations and actions.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 39 Prefer class hierarchies to tagged classes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 39 Prefer class hierarchies to tagged classes.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 40 Respect the contract of equals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 40 Respect the contract of equals.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 41 Respect the contract of hashCode.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 41 Respect the contract of hashCode.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 42 Respect the contract of compareTo.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 42 Respect the contract of compareTo.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 43 Consider extracting non-essential parts of your API into extensions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 43 Consider extracting non-essential parts of your API into extensions.md -------------------------------------------------------------------------------- /Part 2 Code design/Chapter 6 Class design/Item 44 Avoid member extensions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 2 Code design/Chapter 6 Class design/Item 44 Avoid member extensions.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 7 Make it cheap/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 7 Make it cheap/Introduction.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 7 Make it cheap/Item 45 Avoid unnecessary object creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 7 Make it cheap/Item 45 Avoid unnecessary object creation.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 7 Make it cheap/Item 46 Use inline modifier for functions with parameters of functional types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 7 Make it cheap/Item 46 Use inline modifier for functions with parameters of functional types.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 7 Make it cheap/Item 47 Consider using inline classes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 7 Make it cheap/Item 47 Consider using inline classes.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 7 Make it cheap/Item 48 Eliminate obsolete object references.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 7 Make it cheap/Item 48 Eliminate obsolete object references.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 8 Efficient collection processing/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 8 Efficient collection processing/Introduction.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 49 Prefer Sequence for big collections with more than one processing step.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 49 Prefer Sequence for big collections with more than one processing step.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 50 Limit the number of operations.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 50 Limit the number of operations.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 51 Consider Arrays with primitives for performance-critical processing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 51 Consider Arrays with primitives for performance-critical processing.md -------------------------------------------------------------------------------- /Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 52 Consider using mutable collections.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 52 Consider using mutable collections.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/README.md -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/SUMMARY.md -------------------------------------------------------------------------------- /assets/chapter1/chapter1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter1/chapter1-1.png -------------------------------------------------------------------------------- /assets/chapter1/chapter1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter1/chapter1-2.png -------------------------------------------------------------------------------- /assets/chapter1/chapter1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter1/chapter1-3.png -------------------------------------------------------------------------------- /assets/chapter2/chapter2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter2/chapter2-1.png -------------------------------------------------------------------------------- /assets/chapter2/chapter2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter2/chapter2-2.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-1.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-2.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-3.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-4.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-5.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-6.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-7.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-8.png -------------------------------------------------------------------------------- /assets/chapter3/chapter3-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter3/chapter3-9.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-1.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-2.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-3.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-4.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-5.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-6.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-7.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-8.png -------------------------------------------------------------------------------- /assets/chapter4/chapter4-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter4/chapter4-9.png -------------------------------------------------------------------------------- /assets/chapter5/chapter5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter5/chapter5-1.png -------------------------------------------------------------------------------- /assets/chapter5/chapter5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter5/chapter5-2.png -------------------------------------------------------------------------------- /assets/chapter5/chapter5-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter5/chapter5-3.png -------------------------------------------------------------------------------- /assets/chapter6/chapter6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter6/chapter6-1.png -------------------------------------------------------------------------------- /assets/chapter6/chapter6-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter6/chapter6-2.png -------------------------------------------------------------------------------- /assets/chapter6/chapter6-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter6/chapter6-3.png -------------------------------------------------------------------------------- /assets/chapter6/chapter6-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter6/chapter6-4.png -------------------------------------------------------------------------------- /assets/chapter6/chapter6-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter6/chapter6-5.png -------------------------------------------------------------------------------- /assets/chapter7/chapter7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter7/chapter7-1.png -------------------------------------------------------------------------------- /assets/chapter7/chapter7-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter7/chapter7-2.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-1.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-2.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-3.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-4.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-5.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-6.png -------------------------------------------------------------------------------- /assets/chapter8/chapter8-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/assets/chapter8/chapter8-7.png -------------------------------------------------------------------------------- /docs/.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/.github/workflows/main.yml -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Introduction.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 7 Prefer null or Failure result when the lack of result is possible.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 7 Prefer null or Failure result when the lack of result is possible.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Introduction.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 11 Design for readability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 11 Design for readability.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 13 Avoid returning or operating on Unit?.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 13 Avoid returning or operating on Unit?.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md -------------------------------------------------------------------------------- /docs/Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Introduction.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 19 Do not repeat knowledge.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 19 Do not repeat knowledge.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 20 Do not repeat common algorithms.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 20 Do not repeat common algorithms.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 21 Use property delegation to extract common property patterns.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 21 Use property delegation to extract common property patterns.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 22 Use generics when implementing common algorithms.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 22 Use generics when implementing common algorithms.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 23 Avoid shadowing type parameters.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 23 Avoid shadowing type parameters.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 24 Consider variance for generic types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 24 Consider variance for generic types.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 3 Reusability/Item 25 Reuse between different platforms by extracting common modules.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 3 Reusability/Item 25 Reuse between different platforms by extracting common modules.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Introduction.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 26 Each function should be written in terms of a single level of abstraction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 26 Each function should be written in terms of a single level of abstraction.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 27 Use abstraction to protect code against changes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 27 Use abstraction to protect code against changes.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 28 Specify API stability.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 28 Specify API stability.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 29 Consider wrapping external API.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 29 Consider wrapping external API.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 30 Minimize elements visibility.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 30 Minimize elements visibility.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 31 Define contract with documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 31 Define contract with documentation.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 4 Abstraction design/Item 32 Respect abstraction contracts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 4 Abstraction design/Item 32 Respect abstraction contracts.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 5 Object creation/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 5 Object creation/Introduction.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 5 Object creation/Item 33 Consider factory functions instead of constructors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 5 Object creation/Item 33 Consider factory functions instead of constructors.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 5 Object creation/Item 34 Consider a primary constructor with named optional arguments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 5 Object creation/Item 34 Consider a primary constructor with named optional arguments.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 5 Object creation/Item 35 Consider defining a DSL for complex object creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 5 Object creation/Item 35 Consider defining a DSL for complex object creation.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Introduction.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 36 Prefer composition over inheritance.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 36 Prefer composition over inheritance.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 37 Use the data modifier to represent a bundle of data.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 37 Use the data modifier to represent a bundle of data.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 38 Use function types instead of interfaces to pass operations and actions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 38 Use function types instead of interfaces to pass operations and actions.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 39 Prefer class hierarchies to tagged classes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 39 Prefer class hierarchies to tagged classes.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 40 Respect the contract of equals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 40 Respect the contract of equals.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 41 Respect the contract of hashCode.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 41 Respect the contract of hashCode.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 42 Respect the contract of compareTo.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 42 Respect the contract of compareTo.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 43 Consider extracting non-essential parts of your API into extensions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 43 Consider extracting non-essential parts of your API into extensions.md -------------------------------------------------------------------------------- /docs/Part 2 Code design/Chapter 6 Class design/Item 44 Avoid member extensions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 2 Code design/Chapter 6 Class design/Item 44 Avoid member extensions.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 7 Make it cheap/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 7 Make it cheap/Introduction.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 45 Avoid unnecessary object creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 45 Avoid unnecessary object creation.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 46 Use inline modifier for functions with parameters of functional types.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 46 Use inline modifier for functions with parameters of functional types.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 47 Consider using inline classes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 47 Consider using inline classes.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 48 Eliminate obsolete object references.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 7 Make it cheap/Item 48 Eliminate obsolete object references.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Introduction.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 49 Prefer Sequence for big collections with more than one processing step.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 49 Prefer Sequence for big collections with more than one processing step.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 50 Limit the number of operations.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 50 Limit the number of operations.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 51 Consider Arrays with primitives for performance-critical processing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 51 Consider Arrays with primitives for performance-critical processing.md -------------------------------------------------------------------------------- /docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 52 Consider using mutable collections.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 52 Consider using mutable collections.md -------------------------------------------------------------------------------- /docs/assets/chapter1/chapter1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter1/chapter1-1.png -------------------------------------------------------------------------------- /docs/assets/chapter1/chapter1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter1/chapter1-2.png -------------------------------------------------------------------------------- /docs/assets/chapter1/chapter1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter1/chapter1-3.png -------------------------------------------------------------------------------- /docs/assets/chapter2/chapter2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter2/chapter2-1.png -------------------------------------------------------------------------------- /docs/assets/chapter2/chapter2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter2/chapter2-2.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-1.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-2.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-3.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-4.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-5.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-6.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-7.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-8.png -------------------------------------------------------------------------------- /docs/assets/chapter3/chapter3-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter3/chapter3-9.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-1.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-2.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-3.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-4.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-5.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-6.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-7.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-8.png -------------------------------------------------------------------------------- /docs/assets/chapter4/chapter4-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter4/chapter4-9.png -------------------------------------------------------------------------------- /docs/assets/chapter5/chapter5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter5/chapter5-1.png -------------------------------------------------------------------------------- /docs/assets/chapter5/chapter5-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter5/chapter5-2.png -------------------------------------------------------------------------------- /docs/assets/chapter5/chapter5-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter5/chapter5-3.png -------------------------------------------------------------------------------- /docs/assets/chapter6/chapter6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter6/chapter6-1.png -------------------------------------------------------------------------------- /docs/assets/chapter6/chapter6-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter6/chapter6-2.png -------------------------------------------------------------------------------- /docs/assets/chapter6/chapter6-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter6/chapter6-3.png -------------------------------------------------------------------------------- /docs/assets/chapter6/chapter6-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter6/chapter6-4.png -------------------------------------------------------------------------------- /docs/assets/chapter6/chapter6-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter6/chapter6-5.png -------------------------------------------------------------------------------- /docs/assets/chapter7/chapter7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter7/chapter7-1.png -------------------------------------------------------------------------------- /docs/assets/chapter7/chapter7-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter7/chapter7-2.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-1.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-2.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-3.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-4.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-5.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-6.png -------------------------------------------------------------------------------- /docs/assets/chapter8/chapter8-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/assets/chapter8/chapter8-7.png -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/FontAwesome.otf -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-fontsettings/website.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-fontsettings/website.css -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-highlight/ebook.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-highlight/ebook.css -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-highlight/website.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-highlight/website.css -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-lunr/lunr.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-lunr/lunr.min.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-lunr/search-lunr.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-lunr/search-lunr.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-search/lunr.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-search/lunr.min.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-search/search-engine.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-search/search-engine.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-search/search.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-search/search.css -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-search/search.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-search/search.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook-plugin-sharing/buttons.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook-plugin-sharing/buttons.js -------------------------------------------------------------------------------- /docs/gitbook/gitbook.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/gitbook.js -------------------------------------------------------------------------------- /docs/gitbook/images/apple-touch-icon-precomposed-152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/images/apple-touch-icon-precomposed-152.png -------------------------------------------------------------------------------- /docs/gitbook/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/images/favicon.ico -------------------------------------------------------------------------------- /docs/gitbook/style.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/style.css -------------------------------------------------------------------------------- /docs/gitbook/theme.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/gitbook/theme.js -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/index.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-1-tiao-xian-zhi-ke-bian-xing-part-1-good-codechapter-1-safetyitem-1-limit-mutability.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-1-tiao-xian-zhi-ke-bian-xing-part-1-good-codechapter-1-safetyitem-1-limit-mutability.md.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-10-tiao-bian-xie-dan-yuan-ce-shi-part-1-good-codechapter-1-safetyitem-10-write-unit-tests.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-10-tiao-bian-xie-dan-yuan-ce-shi-part-1-good-codechapter-1-safetyitem-10-write-unit-tests.md.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-2-tiao-zui-xiao-hua-bian-liang-zuo-yong-yu-part-1-good-codechapter-1-safetyitem-2-minimize-the-sc.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-2-tiao-zui-xiao-hua-bian-liang-zuo-yong-yu-part-1-good-codechapter-1-safetyitem-2-minimize-the-sc.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-3-tiao-jin-kuai-xiao-chu-ping-tai-lei-xing-part-1-good-codechapter-1-safetyitem-3-eliminate-platf.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-3-tiao-jin-kuai-xiao-chu-ping-tai-lei-xing-part-1-good-codechapter-1-safetyitem-3-eliminate-platf.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-4-tiao-bu-yao-ba-tui-duan-lei-xing-bao-lou-gei-wai-bu-part-1-good-codechapter-1-safetyitem-4-do-n.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-4-tiao-bu-yao-ba-tui-duan-lei-xing-bao-lou-gei-wai-bu-part-1-good-codechapter-1-safetyitem-4-do-n.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-5-tiao-zai-can-shu-yu-zhuang-tai-shang-zhi-ding-ni-de-qi-wang-part-1-good-codechapter-1-safetyite.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-5-tiao-zai-can-shu-yu-zhuang-tai-shang-zhi-ding-ni-de-qi-wang-part-1-good-codechapter-1-safetyite.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-6-tiao-jin-ke-neng-shi-yong-biao-zhun-ku-zhong-ti-gong-de-yi-chang-part-1-good-codechapter-1-safe.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-6-tiao-jin-ke-neng-shi-yong-biao-zhun-ku-zhong-ti-gong-de-yi-chang-part-1-good-codechapter-1-safe.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-8-tiao-zheng-que-di-chu-li-null-zhi-part-1-good-codechapter-1-safetyitem-8-handle-nulls-properly..html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-8-tiao-zheng-que-di-chu-li-null-zhi-part-1-good-codechapter-1-safetyitem-8-handle-nulls-properly..html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/di-9-tiao-shi-yong-use-guan-bi-zi-yuan-part-1-good-codechapter-1-safetyitem-9-close-resources-with-u.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/di-9-tiao-shi-yong-use-guan-bi-zi-yuan-part-1-good-codechapter-1-safetyitem-9-close-resources-with-u.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/index.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-1-safety/yin-yan-part-1-good-codechapter-1-safetyintroduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-1-safety/yin-yan-part-1-good-codechapter-1-safetyintroduction.md.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-12-tiao-cao-zuo-fu-de-han-yi-ying-yu-qi-han-shu-ming-yi-zhi-part-1-good-codechapter-2-readability.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-12-tiao-cao-zuo-fu-de-han-yi-ying-yu-qi-han-shu-ming-yi-zhi-part-1-good-codechapter-2-readability.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-14-tiao-zai-lei-xing-bu-ming-que-de-qing-kuang-xia-qing-xian-shi-zhi-ding-bian-liang-de-lei-xing.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-14-tiao-zai-lei-xing-bu-ming-que-de-qing-kuang-xia-qing-xian-shi-zhi-ding-bian-liang-de-lei-xing.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-15-tiao-kao-lv-ming-que-zhi-ding-jie-shou-zhe-part-1-good-codechapter-2-readabilityitem-15-consid.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-15-tiao-kao-lv-ming-que-zhi-ding-jie-shou-zhe-part-1-good-codechapter-2-readabilityitem-15-consid.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-16-tiao-shu-xing-ying-dai-biao-zhuang-tai-er-bu-shi-hang-wei-part-1-good-codechapter-2-readabilit.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-16-tiao-shu-xing-ying-dai-biao-zhuang-tai-er-bu-shi-hang-wei-part-1-good-codechapter-2-readabilit.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-17-tiao-kao-lv-ming-ming-can-shu-part-1-good-codechapter-2-readabilityitem-17-consider-naming-arg.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-17-tiao-kao-lv-ming-ming-can-shu-part-1-good-codechapter-2-readabilityitem-17-consider-naming-arg.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/di-18-tiao-zun-zhong-bian-ma-gui-fan-part-1-good-codechapter-2-readabilityitem-18-respect-coding-con.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/di-18-tiao-zun-zhong-bian-ma-gui-fan-part-1-good-codechapter-2-readabilityitem-18-respect-coding-con.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/index.html -------------------------------------------------------------------------------- /docs/part-1-good-code/chapter-2-readability/yin-yan-part-1-good-codechapter-2-readabilityintroduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/chapter-2-readability/yin-yan-part-1-good-codechapter-2-readabilityintroduction.md.html -------------------------------------------------------------------------------- /docs/part-1-good-code/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-1-good-code/index.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/index.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/introduction-part-2-code-design-chapter-3-reusability-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/introduction-part-2-code-design-chapter-3-reusability-introduction.md.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-3-reusability/item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-3-reusability/item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/index.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-4-abstraction-design/item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-4-abstraction-design/item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-5-object-creation/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-5-object-creation/index.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-5-object-creation/introduction-part-2-code-design-chapter-5-object-creation-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-5-object-creation/introduction-part-2-code-design-chapter-5-object-creation-introduction.md.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-5-object-creation/item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-5-object-creation/item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-5-object-creation/item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-5-object-creation/item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-5-object-creation/item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-5-object-creation/item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/index.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/introduction-part-2-code-design-chapter-6-class-design-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/introduction-part-2-code-design-chapter-6-class-design-introduction.md.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.html -------------------------------------------------------------------------------- /docs/part-2-code-design/chapter-6-class-design/item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/chapter-6-class-design/item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.html -------------------------------------------------------------------------------- /docs/part-2-code-design/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-2-code-design/index.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/index.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-7-make-it-cheap/item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-7-make-it-cheap/item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/index.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/chapter-8-efficient-collection-processing/item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/chapter-8-efficient-collection-processing/item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.html -------------------------------------------------------------------------------- /docs/part-3-efficiency/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/part-3-efficiency/index.html -------------------------------------------------------------------------------- /docs/search_index.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/docs/search_index.json -------------------------------------------------------------------------------- /part-1-good-code/README.md: -------------------------------------------------------------------------------- 1 | # Part 1 Good Code 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 1 Safety 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-1-tiao-xian-zhi-ke-bian-xing-part-1-good-codechapter-1-safetyitem-1-limit-mutability.md.md: -------------------------------------------------------------------------------- 1 | # \[第1条:限制可变性]\(Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-10-tiao-bian-xie-dan-yuan-ce-shi-part-1-good-codechapter-1-safetyitem-10-write-unit-tests.md.md: -------------------------------------------------------------------------------- 1 | # \[第10条:编写单元测试]\(Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-2-tiao-zui-xiao-hua-bian-liang-zuo-yong-yu-part-1-good-codechapter-1-safetyitem-2-minimize-the-sc.md: -------------------------------------------------------------------------------- 1 | # \[第2条:最小化变量作用域]\(Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-3-tiao-jin-kuai-xiao-chu-ping-tai-lei-xing-part-1-good-codechapter-1-safetyitem-3-eliminate-platf.md: -------------------------------------------------------------------------------- 1 | # \[第3条:尽快消除平台类型]\(Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-4-tiao-bu-yao-ba-tui-duan-lei-xing-bao-lou-gei-wai-bu-part-1-good-codechapter-1-safetyitem-4-do-n.md: -------------------------------------------------------------------------------- 1 | # \[第4条:不要把推断类型暴露给外部]\(Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-5-tiao-zai-can-shu-yu-zhuang-tai-shang-zhi-ding-ni-de-qi-wang-part-1-good-codechapter-1-safetyite.md: -------------------------------------------------------------------------------- 1 | # \[第5条:在参数与状态上指定你的期望]\(Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-6-tiao-jin-ke-neng-shi-yong-biao-zhun-ku-zhong-ti-gong-de-yi-chang-part-1-good-codechapter-1-safe.md: -------------------------------------------------------------------------------- 1 | # \[第6条:尽可能使用标准库中提供的异常]\(Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-1-good-code/chapter-1-safety/di-7-tiao-dang-bu-neng-fan-hui-yu-qi-jie-guo-shi-you-xian-shi-yong-nullohuo-failure-zuo-wei-fan-hui.md -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-8-tiao-zheng-que-di-chu-li-null-zhi-part-1-good-codechapter-1-safetyitem-8-handle-nulls-properly..md: -------------------------------------------------------------------------------- 1 | # \[第8条:正确地处理null值]\(Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/di-9-tiao-shi-yong-use-guan-bi-zi-yuan-part-1-good-codechapter-1-safetyitem-9-close-resources-with-u.md: -------------------------------------------------------------------------------- 1 | # \[第9条:使用use关闭资源]\(Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-1-safety/yin-yan-part-1-good-codechapter-1-safetyintroduction.md.md: -------------------------------------------------------------------------------- 1 | # \[引言]\(Part 1 Good code/Chapter 1 Safety/Introduction.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 2 Readability 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-1-good-code/chapter-2-readability/di-11-tiao-ke-du-xing-she-ji-part-1-good-codechapter-2-readabilityitem-11-design-for-readability.md.md -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-12-tiao-cao-zuo-fu-de-han-yi-ying-yu-qi-han-shu-ming-yi-zhi-part-1-good-codechapter-2-readability.md: -------------------------------------------------------------------------------- 1 | # \[第12条:操作符的含义应与其函数名一致]\(Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-1-good-code/chapter-2-readability/di-13-tiao-bi-mian-fan-hui-huo-cao-zuo-unit-part-1-good-codechapter-2-readabilityitem201320avoid20re.md -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-14-tiao-zai-lei-xing-bu-ming-que-de-qing-kuang-xia-qing-xian-shi-zhi-ding-bian-liang-de-lei-xing.md: -------------------------------------------------------------------------------- 1 | # \[第14条:在类型不明确的情况下,请显式指定变量的类型]\(Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-15-tiao-kao-lv-ming-que-zhi-ding-jie-shou-zhe-part-1-good-codechapter-2-readabilityitem-15-consid.md: -------------------------------------------------------------------------------- 1 | # \[第15条:考虑明确指定接收者]\(Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-16-tiao-shu-xing-ying-dai-biao-zhuang-tai-er-bu-shi-hang-wei-part-1-good-codechapter-2-readabilit.md: -------------------------------------------------------------------------------- 1 | # \[第16条:属性应代表状态,而不是行为]\(Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-17-tiao-kao-lv-ming-ming-can-shu-part-1-good-codechapter-2-readabilityitem-17-consider-naming-arg.md: -------------------------------------------------------------------------------- 1 | # \[第17条:考虑命名参数]\(Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/di-18-tiao-zun-zhong-bian-ma-gui-fan-part-1-good-codechapter-2-readabilityitem-18-respect-coding-con.md: -------------------------------------------------------------------------------- 1 | # \[第18条:尊重编码规范]\(Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md) 2 | 3 | -------------------------------------------------------------------------------- /part-1-good-code/chapter-2-readability/yin-yan-part-1-good-codechapter-2-readabilityintroduction.md.md: -------------------------------------------------------------------------------- 1 | # \[引言]\(Part 1 Good code/Chapter 2 Readability/Introduction.md) 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/README.md: -------------------------------------------------------------------------------- 1 | # Part 2 Code Design 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 3 Reusability 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/introduction-part-2-code-design-chapter-3-reusability-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/introduction-part-2-code-design-chapter-3-reusability-introduction.md.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-19-do-not-repeat-knowledge-part-2-code-design-chapter-3-reusability-item-19-do-not-repeat-knowl.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-20-do-not-repeat-common-algorithms-part-2-code-design-chapter-3-reusability-item-20-do-not-repe.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-21-use-property-delegation-to-extract-common-property-patterns-part-2-code-design-chapter-3-reu.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-22-use-generics-when-implementing-common-algorithms-part-2-code-design-chapter-3-reusability-it.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-23-avoid-shadowing-type-parameters-part-2-code-design-chapter-3-reusability-item-23-avoid-shado.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-24-consider-variance-for-generic-types-part-2-code-design-chapter-3-reusability-item-24-conside.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-3-reusability/item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-3-reusability/item-25-reuse-between-different-platforms-by-extracting-common-modules-part-2-code-design-chapter-3.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 4 Abstraction Design 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/introduction-part-2-code-design-chapter-4-abstraction-design-introduction.md.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-26-each-function-should-be-written-in-terms-of-a-single-level-of-abstraction-part-2-code-design.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-27-use-abstraction-to-protect-code-against-changes-part-2-code-design-chapter-4-abstraction-des.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-28-specify-api-stability-part-2-code-design-chapter-4-abstraction-design-item-28-specify-api-st.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-29-consider-wrapping-external-api-part-2-code-design-chapter-4-abstraction-design-item-29-consi.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-30-minimize-elements-visibility-part-2-code-design-chapter-4-abstraction-design-item-30-minimiz.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-31-define-contract-with-documentation-part-2-code-design-chapter-4-abstraction-design-item-31-d.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-4-abstraction-design/item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-4-abstraction-design/item-32-respect-abstraction-contracts-part-2-code-design-chapter-4-abstraction-design-item-32-respec.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-5-object-creation/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 5 Object Creation 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/chapter-5-object-creation/introduction-part-2-code-design-chapter-5-object-creation-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-5-object-creation/introduction-part-2-code-design-chapter-5-object-creation-introduction.md.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-5-object-creation/item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-5-object-creation/item-33-consider-factory-functions-instead-of-constructors-part-2-code-design-chapter-5-object-creat.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-5-object-creation/item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-5-object-creation/item-34-consider-a-primary-constructor-with-named-optional-arguments-part-2-code-design-chapter-5-ob.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-5-object-creation/item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-5-object-creation/item-35-consider-defining-a-dsl-for-complex-object-creation-part-2-code-design-chapter-5-object-crea.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 6 Class Design 2 | 3 | -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/introduction-part-2-code-design-chapter-6-class-design-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/introduction-part-2-code-design-chapter-6-class-design-introduction.md.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-36-prefer-composition-over-inheritance-part-2-code-design-chapter-6-class-design-item-36-prefer.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-37-use-the-data-modifier-to-represent-a-bundle-of-data-part-2-code-design-chapter-6-class-desig.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-38-use-function-types-instead-of-interfaces-to-pass-operations-and-actions-part-2-code-design-c.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-39-prefer-class-hierarchies-to-tagged-classes-part-2-code-design-chapter-6-class-design-item-39.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-40-respect-the-contract-of-equals-part-2-code-design-chapter-6-class-design-item-40-respect-the.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-41-respect-the-contract-of-hash-code-part-2-code-design-chapter-6-class-design-item-41-respect.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-42-respect-the-contract-of-compare-to-part-2-code-design-chapter-6-class-design-item-42-respect.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-43-consider-extracting-non-essential-parts-of-your-api-into-extensions-part-2-code-design-chapt.md -------------------------------------------------------------------------------- /part-2-code-design/chapter-6-class-design/item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-2-code-design/chapter-6-class-design/item-44-avoid-member-extensions-part-2-code-design-chapter-6-class-design-item-44-avoid-member-exten.md -------------------------------------------------------------------------------- /part-3-efficiency/README.md: -------------------------------------------------------------------------------- 1 | # Part 3 Efficiency 2 | 3 | -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 7 Make It Cheap 2 | 3 | -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-7-make-it-cheap/introduction-part-3-efficiency-chapter-7-make-it-cheap-introduction.md.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-7-make-it-cheap/item-45-avoid-unnecessary-object-creation-part-3-efficiency-chapter-7-make-it-cheap-item-45-avoid-un.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-7-make-it-cheap/item-46-use-inline-modifier-for-functions-with-parameters-of-functional-types-part-3-efficiency-chap.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-7-make-it-cheap/item-47-consider-using-inline-classes-part-3-efficiency-chapter-7-make-it-cheap-item-47-consider-usi.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-7-make-it-cheap/item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-7-make-it-cheap/item-48-eliminate-obsolete-object-references-part-3-efficiency-chapter-7-make-it-cheap-item-48-elimi.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/README.md: -------------------------------------------------------------------------------- 1 | # Chapter 8 Efficient Collection Processing 2 | 3 | -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-8-efficient-collection-processing/di-50-tiao-jian-shao-cao-zuo-de-ci-shu-part-3-efficiencychapter-8-efficient-collection-processingite.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-8-efficient-collection-processing/di-51-tiao-zai-xing-neng-you-xian-de-chang-jing-kao-lv-shi-yong-ji-chu-lei-xing-shu-zu-part-3-effici.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-8-efficient-collection-processing/di-52-tiao-zai-chu-li-ju-bu-bian-liang-shi-kao-lv-shi-yong-ke-bian-ji-he-part-3-efficiencychapter-8.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-8-efficient-collection-processing/introduction-part-3-efficiency-chapter-8-efficient-collection-processing-introduction.md.md -------------------------------------------------------------------------------- /part-3-efficiency/chapter-8-efficient-collection-processing/item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxzMeng/Effective-Kotlin-zh-CN/HEAD/part-3-efficiency/chapter-8-efficient-collection-processing/item-49-prefer-sequence-for-big-collections-with-more-than-one-processing-step-part-3-efficiency-cha.md --------------------------------------------------------------------------------