0
点赞
收藏
分享

微信扫一扫

《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master

《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master_技术栈


Chapter 1: A Pragmatic Philosophy

实用主义的编程源自于一种务实的哲学思想,这章为这些哲学思想奠定基础:

  1. The Cat Ate My Source Code :对你自己、你的职业规划、你的工以及具体的项目负责。除了尽最大的努力做好的你的本职工作,你还要考虑你没有考虑全面的会出错的场景【如果磁盘坏了,但你却没有备份代码,你的错;】。当错误发生时,不要说无用的借口,而是第一时间思考并提供解决方案
  2. Software Entropt(熵):同理破窗效应,如果你的项目代码中只要有一处“破窗”,那么你的项目将会渐渐变烂。所以,不要容忍一处“破窗”【劣质的设计、错误的决定、代码等】。
  3. Stone Soup and Boiled Frogs:可能有一种情景:你有一个好的建议或想法,但是在这之前你需要一些列繁琐的请求步骤(获得批准以及流程冗长拖沓,预算等等),这可以定义为“启动疲劳(start-up fatigue)”。不要惰于踏出那一步,Be a Catalyst(催化剂) for Change。同时,工作的时候眼光不要太狭隘,Remember the Big Picture,不要闷头打代码,项目进度如何,需求是否准确等全局性问题要把握好,确保你在正确的方向上。
  4. Good-Enough Sothware:让你的用户参与到项目的协定中;原型开发模式给用户更多体会,用户才能给出更多的反馈。用户要的功能才是需求,不然功能写得多好也是画蛇添足。
  5. Your Knowledge Portfolio:软件行业,技术更新飞快,要想有一个成功的职业生涯,你必须管理好你的知识技术栈。
  • 构建自己的知识技术栈:T型人才、不断完善填充自己的技术栈。
  • 目标:每年学一门新语言、每季度看一本技术书、也要看非技术的书、参与到当地的一些群组中、体验不同的开发环境、保持对最新技术的关注等。
  • 对你看到的听到的保持批判性思考。
  1. Communicate!:理解透彻你想说的、了解你的听众(你想他们知道什么,他们对什么感兴趣、他们能够接收怎么的复杂信息、他们想了解多深入、如何吸引他们了解你要说的......等)、选择合适时机、选择合适的方式、适度包装、让用户事前参与、懂得聆听、给予他人反馈

Chapter 2 : A Pragmatic Approach

在开发过程中谨记这些基本原则,你的代码将会变得更健壮、更快速,更简洁。

  1. The Evils of Duplication:当同样的代码在你的程序中出现两次时,​​如果你更改其中一个,以必须得记得更改另一个​​,但问题就是,你通常都会忘记。
  • Imposed Duplication
  • Inadvertent Duplication
  • Impatient Duplication:​​shortcuts make for long delays​​,有时候贪图方便直接复制黏贴,那你肯定有自食其果的一天。
  • InterDeveloper Duplication
  1. Orthogonality(正交,即高内聚,低耦合):消除不相关代码模块之间的影响;以下是一些可以在你的工作中应用的规范:
  • Project Teams:分工明确;
  • Design:模块化;
  • Toolkit and Libraries:当引入第三方工具包时,要小心保持系统的正交性;
  • Coding:避免全局数据(多线程时数据的更改);避免类似的函数方法。
  1. Reversibility
  • Reversibility:在技术选择或者工具选择的时候,永远不能想当然地以为只有一种实现方式从而将代码写得耦合过高,随着未来项目技术的开展,很多工具都可能会被替换,例如数据库;因此,如果你在设计时谨记可逆转性原则,你就会将数据库抽象成提供一个持久化的服务,这样你就可以灵活的更换数据库而不需要做出过多不必要的修改;​​There are no Final Decisions​​。
  • Flexible Architecture
  1. Tracer Bullets:​​Use Tracer Bullets to Find the Target​​,其实跟迭代开发的思想;类似原型开发,却不是;
  2. Prototypes and post-it notes:​​Prototype to Learn​​。
  3. Domain Lanuages
  4. Estimating:​​Estimate to Avoid Surprises​​。你要培养对你的工作量估算完成时间的能力。
  • How Accurate Is Accurate Enough?
  • Where Do Estimates Come From?

Chapter 3 The Basic Tools

  1. The Power of Plain Text:​​Keep Knowledge in Plain Text​​。
  2. Shell Games:​​Use the Power of Command Shells​​。
  3. Power Editing:​​Use a Single Editor Well​​。
  4. Source Code Control:​​Always Use Source Code Control​​。
  5. Debugging:​​Fix the Problem ,Not the Blame​​​。​​Don't Panic When Debugging​​。
  6. Text Manipulation:​​Learn a Text Manipulation Language​​。
  7. Code Generators:​​Write Code That Writes Code​​。

Chapter 4 Pragmatic Paranoia

  • Design by Contract:输入输出是否符合规范。
  • Dead Programs Tell No Lies:​​Crash Early​​。
  • Assertive Programming:​​If It Can't Happen ,Use Assertions to Ensure That It Won't​​。
  • When to Use Exceptions:​​Use Exceptions for Exceptional Problems​​​,​​Error Handlers Are an Alternatve​​。
  • How to Balance Resources:​​Finish What You Start​​。

Chapter 5 Bend or Break

  • Decoupling and the Law of Demeter:​​Minimize Coupling Between Modules​​。
  • Metaprogramming:​​Configure,Don't Integrate​​​。​​Put Abstractions in Code,Details in Metadata​​.。

Kotlin 开发者社区


《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master_开发者社区_02


国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

越是喧嚣的世界,越需要宁静的思考。


举报

相关推荐

程序员修炼之道

0 条评论