本書詳細闡述如何在設計、規劃和實現軟件時做出更好的決策,通過真實的案例,以抽絲剝繭的方式分析那些失誤的決策,探討還有哪些可能的解決方案,並對比各種方案的優缺點,摸索軟件設計的常青模式。本書通過實例來說明某些決策的後果,例如代碼重複如何影響系統的耦合與演進速度,以及如何在日期和時間信息方面隱藏細微差別。本書還介紹如何根據帕累托法則有效地縮小優化範圍,確保分佈式系統的一致性。
通過閱讀本書,讀者很快就可以將作者來之不易的經驗應用到自己的項目中,以預防錯誤並採取更合適的編程決策。
托馬斯·萊萊克(Tomasz Lelek)托馬斯在他的軟件開發職業生涯里,設計並開發過各種各樣的生產服務、軟件架構,他精通多種編程語言(大多數是基於JVM的)。他既實現過單體系統,也曾做過與微服務架構相關的工作。他設計的有些系統可服務數千萬用戶,每秒處理數十萬的操作量。他的工作方向如下:設計採用CQRS 架構的微服務(基於 Apache Kafka);市場自動化及事件流處理;基於Apache Spark和Scala的大數據處理。托馬斯現在就職于Dremio,負責創建現代大數據處理的數據湖解決方案。在此之前,他在DataStax負責與Cassandra數據庫相關的一些產品。他設計的工具幫助成千上萬的開發者設計出性能優異、用戶友好的API,發揮了重要的作用。他為Java-Driver、Cassandra Quarkus、Cassandra-Kafka Connector以及Stargate都貢獻過代碼。
喬恩·斯基特(Jon Skeet)喬恩是谷歌公司的資深開發工程師,目前的工作方向是谷歌雲的.NET客戶端庫。他向開源社區貢獻了.NET版本的Noda時間庫,然而他最讓人稱道的是他在 Stack Overflow 開發者社區的貢獻。喬恩是 Manning 出版社出版的 C# in Depth 一書的作者,此外,他還對 Groovy in Action 以及 Real-World Functional Programming兩書有所貢獻。喬恩對日期時間API以及API版本非常感興趣,這些通常是無人問津的冷門話題。