青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++&&Linux

做自己喜歡的事情

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  3 Posts :: 4 Stories :: 1 Comments :: 0 Trackbacks

常用鏈接

留言簿(18)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

原文地址:

http://tom.preston-werner.com/2010/08/23/readme-driven-development.html


Readme Driven Development

23 August 2010 - San Francisco

I hear a lot of talk these days about TDD and BDD and Extreme Programming and SCRUM and stand up meetings and all kinds of methodologies and techniques for developing better software, but it's all irrelevant unless the software we're building meets the needs of those that are using it. Let me put that another way. A perfect implementation of the wrong specification is worthless. By the same principle a beautifully crafted library with no documentation is also damn near worthless. If your software solves the wrong problem or nobody can figure out how to use it, there's something very bad going on.

Fine. So how do we solve this problem? It's easier than you think, and it's important enough to warrant its very own paragraph.

Write your Readme first.

First. As in, before you write any code or tests or behaviors or stories or ANYTHING. I know, I know, we're programmers, dammit, not tech writers! But that's where you're wrong. Writing a Readme is absolutely essential to writing good software. Until you've written about your software, you have no idea what you'll be coding. Between The Great Backlash Against Waterfall Design and The Supreme Acceptance of Agile Development, something was lost. Don't get me wrong, waterfall design takes things way too far. Huge systems specified in minute detail end up being the WRONG systems specified in minute detail. We were right to strike it down. But what took its place is too far in the other direction. Now we have projects with short, badly written, or entirely missing documentation. Some projects don't even have a Readme!

This is not acceptable. There must be some middle ground between reams of technical specifications and no specifications at all. And in fact there is. That middle ground is the humble Readme.

It's important to distinguish Readme Driven Development from Documentation Driven Development. RDD could be considered a subset or limited version of DDD. By restricting your design documentation to a single file that is intended to be read as an introduction to your software, RDD keeps you safe from DDD-turned-waterfall syndrome by punishing you for lengthy or overprecise specification. At the same time, it rewards you for keeping libraries small and modularized. These simple reinforcements go a long way towards driving your project in the right direction without a lot of process to ensure you do the right thing.

By writing your Readme first you give yourself some pretty significant advantages:

  • Most importantly, you're giving yourself a chance to think through the project without the overhead of having to change code every time you change your mind about how something should be organized or what should be included in the Public API. Remember that feeling when you first started writing automated code tests and realized that you caught all kinds of errors that would have otherwise snuck into your codebase? That's the exact same feeling you'll have if you write the Readme for your project before you write the actual code.

  • As a byproduct of writing a Readme in order to know what you need to implement, you'll have a very nice piece of documentation sitting in front of you. You'll also find that it's much easier to write this document at the beginning of the project when your excitement and motivation are at their highest. Retroactively writing a Readme is an absolute drag, and you're sure to miss all kinds of important details when you do so.

  • If you're working with a team of developers you get even more mileage out of your Readme. If everyone else on the team has access to this information before you've completed the project, then they can confidently start work on other projects that will interface with your code. Without any sort of defined interface, you have to code in serial or face reimplementing large portions of code.

  • It's a lot simpler to have a discussion based on something written down. It's easy to talk endlessly and in circles about a problem if nothing is ever put to text. The simple act of writing down a proposed solution means everyone has a concrete idea that can be argued about and iterated upon.

Consider the process of writing the Readme for your project as the true act of creation. This is where all your brilliant ideas should be expressed. This document should stand on its own as a testament to your creativity and expressiveness. The Readme should be the single most important document in your codebase; writing it first is the proper thing to do.

posted on 2011-08-11 18:20 Smile 閱讀(1518) 評(píng)論(0)  編輯 收藏 引用 所屬分類: iphone開(kāi)發(fā)

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产三级| 亚洲性感美女99在线| 国外精品视频| 亚洲电影成人| 亚洲一区二区三区四区在线观看| 亚洲一区二区三区涩| 久久av红桃一区二区小说| 欧美777四色影视在线| 亚洲三级免费| 欧美一级专区| 欧美日韩精品久久| 影音先锋另类| 久久国产精品72免费观看| 亚洲丁香婷深爱综合| 亚洲一区二区在线免费观看视频 | 免费不卡视频| 一区二区精品国产| 美乳少妇欧美精品| 国产一区二区久久精品| 亚洲一区二区免费| 亚洲国产黄色| 久久综合九色综合网站| 国产午夜精品美女毛片视频| 99综合电影在线视频| 老**午夜毛片一区二区三区| 中文av字幕一区| 欧美区日韩区| 99re亚洲国产精品| 最新日韩av| 美女视频黄免费的久久| 一区免费视频| 久久综合网络一区二区| 欧美一区二区三区免费视| 欧美午夜美女看片| 一区二区三区欧美| 日韩亚洲视频| 国产精品扒开腿做爽爽爽软件| 亚洲高清免费| 欧美成人有码| 欧美成人黄色小视频| 亚洲第一页中文字幕| 久久综合亚州| 久久亚洲综合色| 在线观看欧美日本| 猫咪成人在线观看| 蜜臀av一级做a爰片久久| 亚洲国产黄色片| 欧美成在线观看| 欧美成年视频| 夜夜躁日日躁狠狠久久88av| 91久久精品www人人做人人爽 | 亚洲福利视频在线| 欧美不卡高清| 日韩视频专区| 日韩午夜一区| 国产精品免费看片| 久久久久久9| 久久亚洲精品一区二区| 亚洲人久久久| 一本色道久久综合亚洲精品不| 欧美日韩中文字幕| 久久国产精品99国产精| 久久精品一区二区三区不卡牛牛 | 国产精品久久午夜| 欧美怡红院视频一区二区三区| 午夜精品久久久久久久久久久久| 国产日韩欧美在线播放| 麻豆精品精华液| 欧美激情偷拍| 午夜视频在线观看一区| 久久成年人视频| 亚洲国产精品免费| 在线亚洲自拍| 雨宫琴音一区二区在线| 亚洲人成网站精品片在线观看 | 亚洲一区视频| 1204国产成人精品视频| 亚洲美女视频在线免费观看| 国产精品午夜电影| 欧美成人一区二区三区在线观看| 欧美日韩精品在线播放| 久久久91精品国产一区二区精品| 久久亚洲精品一区二区| 亚洲一区中文| 免费成人激情视频| 欧美亚洲日本网站| 欧美福利网址| 久久看片网站| 国产精品卡一卡二卡三| 欧美激情精品| 狠狠综合久久av一区二区老牛| 亚洲精品一区二区三区樱花| 国产日韩欧美综合精品| 亚洲精品一区二区三区在线观看| 国产亚洲欧美一区二区三区| 亚洲激情综合| 激情欧美丁香| 午夜视频在线观看一区二区| 一区二区三区免费观看| 久久夜色精品国产亚洲aⅴ| 午夜久久资源| 欧美精品日韩| 亚洲国产一二三| 在线日韩欧美视频| 久久国产精品一区二区三区四区| aa日韩免费精品视频一| 欧美成人亚洲| 亚洲承认在线| 亚洲国产精品日韩| 久久精品国产免费看久久精品| 亚洲欧美国产一区二区三区| 欧美成人日本| 亚洲国产欧美久久| 91久久在线视频| 免费不卡在线观看| 欧美www视频| 亚洲第一在线综合网站| 久久久精品国产一区二区三区| 久久国内精品自在自线400部| 欧美午夜a级限制福利片| 日韩视频在线一区二区三区| 99re6这里只有精品视频在线观看 99re6这里只有精品 | 国产精品每日更新| 中文在线资源观看网站视频免费不卡 | 亚洲欧美视频| 欧美中文在线观看国产| 国产欧美视频一区二区| 欧美亚洲日本网站| 久久永久免费| 亚洲国产高清在线观看视频| 麻豆精品视频在线观看| 欧美成人激情在线| 亚洲人成亚洲人成在线观看| 久热精品在线| 亚洲久久视频| 欧美一区日韩一区| 伊人色综合久久天天| 免费91麻豆精品国产自产在线观看| 欧美成人午夜77777| 99精品国产一区二区青青牛奶| 欧美日韩成人综合| 亚洲午夜精品一区二区三区他趣| 欧美在线日韩在线| 影音先锋日韩资源| 欧美另类在线播放| 亚洲免费在线播放| 欧美成人性网| 亚洲一级黄色片| 黄色成人小视频| 欧美大胆人体视频| 亚洲私拍自拍| 免费不卡在线视频| 亚洲香蕉网站| 国产日韩综合| 欧美激情日韩| 亚欧成人在线| 亚洲精品乱码久久久久| 久久福利资源站| 日韩一级大片| 国产综合香蕉五月婷在线| 欧美成人精品影院| 亚洲午夜在线观看视频在线| 欧美a级片网站| 午夜在线播放视频欧美| 亚洲黄色一区| 国产日韩欧美精品| 欧美视频一区二区三区在线观看 | 亚洲砖区区免费| 欧美国产日韩在线| 欧美在线亚洲| 亚洲亚洲精品在线观看 | 欧美伦理影院| 久久精品国内一区二区三区| 亚洲精品1区2区| 久久婷婷麻豆| 亚洲欧美日韩综合aⅴ视频| 亚洲精品一区二区三区av| 国产一区二区三区在线观看网站| 欧美日韩亚洲一区二| 久久米奇亚洲| 久久精品国产一区二区三| 亚洲午夜国产成人av电影男同| 亚洲高清在线精品| 久久影音先锋| 久久久久久电影| 久久精品视频在线播放| 亚洲欧美99| 亚洲私人黄色宅男| 这里只有精品丝袜| 宅男精品导航| 亚洲香蕉网站| 亚洲综合色视频| 亚洲免费在线播放| 亚洲欧美日韩精品久久久| 亚洲午夜久久久| 中文在线资源观看网站视频免费不卡 | 国产精品大全| 国产精品久久久久久影院8一贰佰| 欧美欧美在线| 欧美网站在线观看|