Effective Kotlin 中文翻译
当前进度:英文原文搬运中
- Part 1 Good Code
- Chapter 1 Safety
- [Introduction](Part 1 Good code/Chapter 1 Safety/Introduction.md)
- [Item 1 Limit Mutability](Part 1 Good code/Chapter 1 Safety/Item 1 Limit mutability.md)
- [Item 2 Minimize The Scope Of Variables](Part 1 Good code/Chapter 1 Safety/Item 2 Minimize the scope of variables.md)
- [Item 3 Eliminate Platform Types As Soon As Possible](Part 1 Good code/Chapter 1 Safety/Item 3 Eliminate platform types as soon as possible.md)
- [Item 4 Do Not Expose Inferred Types](Part 1 Good code/Chapter 1 Safety/Item 4 Do not expose inferred types.md)
- [Item 5 Specify Your Expectations On Arguments And State](Part 1 Good code/Chapter 1 Safety/Item 5 Specify your expectations on arguments and state.md)
- [Item 6 Prefer Standard Errors To Custom Ones](Part 1 Good code/Chapter 1 Safety/Item 6 Prefer standard errors to custom ones.md)
- [Item 7 Prefer Null Or Failure Result When The Lack Of Result Is Possible](Part 1 Good code/Chapter 1 Safety/Item 7 Prefer null or Failure result when the lack of result is possible.md)
- [Item 8 Handle Nulls Properly](Part 1 Good code/Chapter 1 Safety/Item 8 Handle nulls properly.md)
- [Item 9 Close Resources With Use](Part 1 Good code/Chapter 1 Safety/Item 9 Close resources with use.md)
- [Item 10 Write Unit Tests](Part 1 Good code/Chapter 1 Safety/Item 10 Write unit tests.md)
- Chapter 2 Readability
- [Introduction](Part 1 Good code/Chapter 2 Readability/Introduction.md)
- [Item 11 Design For Readability](Part 1 Good code/Chapter 2 Readability/Item 11 Design for readability.md)
- [Item 12 Operator Meaning Should Be Consistent With Its Function Name](Part 1 Good code/Chapter 2 Readability/Item 12 Operator meaning should be consistent with its function name.md)
- [Item 13 Avoid Returning Or Operating On Unit](Part 1 Good code/Chapter 2 Readability/Item 13 Avoid returning or operating on Unit?.md)
- [Item 14 Specify The Variable Type When It Is Not Clear](Part 1 Good code/Chapter 2 Readability/Item 14 Specify the variable type when it is not clear.md)
- [Item 15 Consider Referencing Receivers Explicitly](Part 1 Good code/Chapter 2 Readability/Item 15 Consider referencing receivers explicitly.md)
- [Item 16 Properties Should Represent State Not Behavior](Part 1 Good code/Chapter 2 Readability/Item 16 Properties should represent state not behavior.md)
- [Item 17 Consider Naming Arguments](Part 1 Good code/Chapter 2 Readability/Item 17 Consider naming arguments.md)
- [Item 18 Respect Coding Conventions](Part 1 Good code/Chapter 2 Readability/Item 18 Respect coding conventions.md)
- Chapter 1 Safety
- Part 2 Code Design
- Chapter 3 Reusability
- [Introduction](Part 2 Code design/Chapter 3 Reusability/Introduction.md)
- [Item 19 Do Not Repeat Knowledge](Part 2 Code design/Chapter 3 Reusability/Item 19 Do not repeat knowledge.md)
- [Item 20 Do Not Repeat Common Algorithms](Part 2 Code design/Chapter 3 Reusability/Item 20 Do not repeat common algorithms.md)
- [Item 21 Use Property Delegation To Extract Common Property Patterns](Part 2 Code design/Chapter 3 Reusability/Item 21 Use property delegation to extract common property patterns.md)
- [Item 22 Use Generics When Implementing Common Algorithms](Part 2 Code design/Chapter 3 Reusability/Item 22 Use generics when implementing common algorithms.md)
- [Item 23 Avoid Shadowing Type Parameters](Part 2 Code design/Chapter 3 Reusability/Item 23 Avoid shadowing type parameters.md)
- [Item 24 Consider Variance For Generic Types](Part 2 Code design/Chapter 3 Reusability/Item 24 Consider variance for generic types.md)
- [Item 25 Reuse Between Different Platforms By Extracting Common Modules](Part 2 Code design/Chapter 3 Reusability/Item 25 Reuse between different platforms by extracting common modules.md)
- Chapter 4 Abstraction Design
- [Introduction](Part 2 Code design/Chapter 4 Abstraction design/Introduction.md)
- [Item 26 Each Function Should Be Written In Terms Of A Single Level Of Abstraction](Part 2 Code design/Chapter 4 Abstraction design/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](Part 2 Code design/Chapter 4 Abstraction design/Item 27 Use abstraction to protect code against changes.md)
- [Item 28 Specify API Stability](Part 2 Code design/Chapter 4 Abstraction design/Item 28 Specify API stability.md)
- [Item 29 Consider Wrapping External API](Part 2 Code design/Chapter 4 Abstraction design/Item 29 Consider wrapping external API.md)
- [Item 30 Minimize Elements Visibility](Part 2 Code design/Chapter 4 Abstraction design/Item 30 Minimize elements visibility.md)
- [Item 31 Define Contract With Documentation](Part 2 Code design/Chapter 4 Abstraction design/Item 31 Define contract with documentation.md)
- [Item 32 Respect Abstraction Contracts](Part 2 Code design/Chapter 4 Abstraction design/Item 32 Respect abstraction contracts.md)
- Chapter 5 Object Creation
- [Introduction](Part 2 Code design/Chapter 5 Object creation/Introduction.md)
- [Item 33 Consider Factory Functions Instead Of Constructors](Part 2 Code design/Chapter 5 Object creation/Item 33 Consider factory functions instead of constructors.md)
- [Item 34 Consider A Primary Constructor With Named Optional Arguments](Part 2 Code design/Chapter 5 Object creation/Item 34 Consider a primary constructor with named optional arguments.md)
- [Item 35 Consider Defining A DSL For Complex Object Creation](Part 2 Code design/Chapter 5 Object creation/Item 35 Consider defining a DSL for complex object creation.md)
- Chapter 6 Class Design
- [Introduction](Part 2 Code design/Chapter 6 Class design/Introduction.md)
- [Item 36 Prefer Composition Over Inheritance](Part 2 Code design/Chapter 6 Class design/Item 36 Prefer composition over inheritance.md)
- [Item 37 Use The Data Modifier To Represent A Bundle Of Data](Part 2 Code design/Chapter 6 Class design/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](Part 2 Code design/Chapter 6 Class design/Item 38 Use function types instead of interfaces to pass operations and actions.md)
- [Item 39 Prefer Class Hierarchies To Tagged Classes](Part 2 Code design/Chapter 6 Class design/Item 39 Prefer class hierarchies to tagged classes.md)
- [Item 40 Respect The Contract Of Equals](Part 2 Code design/Chapter 6 Class design/Item 40 Respect the contract of equals.md)
- [Item 41 Respect The Contract Of Hash Code](Part 2 Code design/Chapter 6 Class design/Item 41 Respect the contract of hashCode.md)
- [Item 42 Respect The Contract Of Compare To](Part 2 Code design/Chapter 6 Class design/Item 42 Respect the contract of compareTo.md)
- [Item 43 Consider Extracting Non Essential Parts Of Your API Into Extensions](Part 2 Code design/Chapter 6 Class design/Item 43 Consider extracting non-essential parts of your API into extensions.md)
- [Item 44 Avoid Member Extensions](Part 2 Code design/Chapter 6 Class design/Item 44 Avoid member extensions.md)
- Chapter 3 Reusability
- Part 3 Efficiency
- Chapter 7 Make It Cheap
- [Introduction](Part 3 Efficiency/Chapter 7 Make it cheap/Introduction.md)
- [Item 45 Avoid Unnecessary Object Creation](Part 3 Efficiency/Chapter 7 Make it cheap/Item 45 Avoid unnecessary object creation.md)
- [Item 46 Use Inline Modifier For Functions With Parameters Of Functional Types](Part 3 Efficiency/Chapter 7 Make it cheap/Item 46 Use inline modifier for functions with parameters of functional types.md)
- [Item 47 Consider Using Inline Classes](Part 3 Efficiency/Chapter 7 Make it cheap/Item 47 Consider using inline classes.md)
- [Item 48 Eliminate Obsolete Object References](Part 3 Efficiency/Chapter 7 Make it cheap/Item 48 Eliminate obsolete object references.md)
- Chapter 8 Efficient Collection Processing
- [Introduction](Part 3 Efficiency/Chapter 8 Efficient collection processing/Introduction.md)
- [Item 49 Prefer Sequence For Big Collections With More Than One Processing Step](Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 49 Prefer Sequence for big collections with more than one processing step.md)
- [Item 50 Limit The Number Of Operations](Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 50 Limit the number of operations.md)
- [Item 51 Consider Arrays With Primitives For Performance Critical Processing](Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 51 Consider Arrays with primitives for performance-critical processing.md)
- [Item 52 Consider Using Mutable Collections](Part 3 Efficiency/Chapter 8 Efficient collection processing/Item 52 Consider using mutable collections.md)
- Chapter 7 Make It Cheap