Care About Your Craft. 關(guān)心你的技藝
Think!About Your Work. 思考孽亲!你的工作
1.A Pragmatic Philosophy 注重實(shí)效的哲學(xué)
Provide Options,Don't Make Lame Excuses. 提供各種選擇,不要找撇腳的借口
Don't Live with Broken Windows. 不要容忍破窗戶
Be a Catalyst for Change. 做變化的催化劑
Remember the Big Picture. 記住大圖景
Make Quality a Requirements Issue. 使質(zhì)量成為需求問(wèn)題
Invest Reqularly in Your KnowLedge Portfolio. 定期為你的知識(shí)資產(chǎn)投資
Critically Analyze What You Read and Hear. 批判地分析你讀到的和聽到的
It's Both What You Say and the Way You Say It. 你說(shuō)什么和你怎么說(shuō)同樣重要
2.A Pragmatic Approach 注重實(shí)效的途徑
DRY - Don't Repeat Yourself. 不要重復(fù)你自己
Make It Easy to Reuse. 讓復(fù)用變得容易
Eliminate Effects Between Unrelated Things. 消除無(wú)關(guān)事物之間的影響
There Are No Final Decisions. 不存在最終決策
Use Tracer Bullets to Find the Target. 用曳光彈找到目標(biāo)
Prototype to Learn. 為了學(xué)習(xí)而制作原型
Program Close to the Problem domain. 靠近問(wèn)題領(lǐng)域編程
Estimate to Avoid Surprises. 估算,以避免發(fā)生意外
Iterate the Schedule with the Code. 通過(guò)代碼對(duì)進(jìn)度表進(jìn)行迭代
3.The Basic Tools 基本工具
Keep Knowledge in Plain Text. 用純文本保存知識(shí)
Use the Power of Command Shells. 利用命令shell的力量
Use a Single Editor Well. 用好一種編輯器
Always Use Source Code Control. 總是使用源碼控制
Fix the Problem, Not the Blame. 要修正問(wèn)題衔蹲,而不是發(fā)出職責(zé)
Don't Panic. 不用恐慌
"Select" Isn't Broken. “Select”沒(méi)有問(wèn)題
Don't Assume it - Prove it. 不要假定赤惊,要證明
Learn a Text Manipulation Language. ?學(xué)習(xí)一種文本操縱語(yǔ)言
Write Code That Writes Code. 編寫能編寫代碼的代碼
4.Pragmatic Paranoia 注重實(shí)效的偏執(zhí)
You Can't Write Perfect Software. 你不可能寫出完美的軟件
Design with Contracts. 通過(guò)合約進(jìn)行設(shè)計(jì)
Crash Early. 早崩潰
If It Can't Happen, Use Assertions to Ensure That It Won't. 如果它不可能發(fā)生事富,用斷言確保它不會(huì)發(fā)生
Use Exceptions for Exceptional Problems. 將異常用于異常的問(wèn)題
Finish What You Start. 要有始有終
5.Bend,or Break 彎曲,或折斷
Minimize Coupling Between Modules. 使模塊之間的耦合減至最少
Configure,Don't Integrate. 要配置鸣驱,不要集成
Put Abstractions in Code, Details in Metadata. 將抽象放進(jìn)代碼,細(xì)節(jié)放進(jìn)元數(shù)據(jù)
Analyze Workflow to Improve Concurrency. 分析工作流蝠咆,以改善并發(fā)性
Design Using Services. 用服務(wù)進(jìn)行設(shè)計(jì)
Always Design for Concurrency. 總是為并發(fā)進(jìn)行設(shè)計(jì)
Separate Views from Models. 使視圖與模型分離
Use Blackboards to Coordinate Workflow. 用黑板協(xié)調(diào)工作流
6.While You Are Coding 當(dāng)你編碼時(shí)
Don't Program by Coincidence. 不要靠巧合編程
Estimate the Order of Your Algorithms. 估算你的算法的階
Test Your Estimates. 測(cè)試你的估算
Refactor Early,Refactor Often. 早重構(gòu)踊东,常重構(gòu)
Design to Test. 為測(cè)試而設(shè)計(jì)
Test Your Software,or Your Users Will. 測(cè)試你的軟件,否則你的用戶就得測(cè)試
Don't Use Wizard Code You Don't Understand. 不要使用你不理解的向?qū)Тa
7.Before The Project 在項(xiàng)目開始之前
Don't Gather Requirements - Dig for Them. 不要搜集需求——挖掘他們
Work with a User to Think Like a User. 與用戶一同工作,以像用戶一樣思考
Abstractions Live Longer than Details. 抽象比細(xì)節(jié)活得更長(zhǎng)久
Use a Project Glossary. 使用項(xiàng)目詞匯表
Don't Think Outside the Box - Find the Box. 不要在盒子外面思考——要找到盒子
Listen to Nagging Doubts - Start When You're Ready. 傾聽反復(fù)出現(xiàn)的疑慮——等你準(zhǔn)備好再開始
Some Things Are Better Done than Described. 對(duì)有些事情“做”勝于“描述”
Don't Be a Slave to Formal Methods. 不要做形式方法的奴隸
Expensive Tools Do Not Produce Better Designs. 昂貴的工具不一定能制作出更好的設(shè)計(jì)
8.Pragmatic Projects 注重實(shí)效的項(xiàng)目
Organize Around Functionality, Not Job Functions. 圍繞功能递胧,而不是工作職務(wù)進(jìn)行組織
Don't Use Manual Procedures. 不要使用手工流程
Test Early.Test Often.Test AutoMatically. 早測(cè)試碑韵,常測(cè)試,自動(dòng)測(cè)試
Coding Ain't Done Til All the Tests Run. 要到通過(guò)全部測(cè)試缎脾,編碼才算完成
Use Saboteurs to Test Your Testing. 通過(guò)“蓄意破壞”測(cè)試你的測(cè)試
Test State Coverage,Not Code Coverage. 測(cè)試狀態(tài)覆蓋祝闻,而不是代碼覆蓋
Find Bugs Once. 一個(gè)bug只抓一次
Treat English as Just Another Programming Language. 把英語(yǔ)當(dāng)作又一種編程語(yǔ)言
Build Documentation In, Don't Bolt It On. 把文檔建在里面,不要拴在外面
Gently Exceed Your Users' Expectations. 溫和地超出用戶的期望
Sign Your Work. 在你的作品上簽名