《程序员修炼之道:从小工到专家》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 BulletsUse Tracer Bullets to Find the Target,其实跟迭代开发的思想;类似原型开发,却不是;
  2. Prototypes and post-it notesPrototype to Learn
  3. Domain Lanuages
  4. EstimatingEstimate to Avoid Surprises。你要培养对你的工作量估算完成时间的能力。
  • How Accurate Is Accurate Enough?
  • Where Do Estimates Come From?

Chapter 3 The Basic Tools

  1. The Power of Plain TextKeep Knowledge in Plain Text
  2. Shell GamesUse the Power of Command Shells
  3. Power EditingUse a Single Editor Well
  4. Source Code ControlAlways Use Source Code Control
  5. DebuggingFix the Problem ,Not the BlameDon't Panic When Debugging
  6. Text ManipulationLearn a Text Manipulation Language
  7. Code GeneratorsWrite Code That Writes Code

Chapter 4 Pragmatic Paranoia

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

Chapter 5 Bend or Break

  • Decoupling and the Law of DemeterMinimize Coupling Between Modules
  • MetaprogrammingConfigure,Don't IntegratePut Abstractions in Code,Details in Metadata.。

Kotlin 开发者社区

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容