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

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>
            久久av免费一区| 久久综合色婷婷| 亚洲电影在线看| 欧美有码在线视频| 国产欧美日韩精品丝袜高跟鞋| 99精品国产热久久91蜜凸| 欧美成人精品激情在线观看| 欧美中文字幕在线视频| 国模吧视频一区| 久久久久久久精| 久久精品2019中文字幕| 国产一区二区中文| 久久亚洲综合色一区二区三区| 羞羞色国产精品| 狠狠久久婷婷| 欧美成人性生活| 欧美黄色视屏| 国产精品99久久久久久白浆小说 | 午夜精品影院在线观看| 99精品欧美一区二区三区综合在线| 欧美大片免费看| 日韩亚洲视频| 亚洲午夜性刺激影院| 国产区精品视频| 久久综合九色综合欧美就去吻| 久久精品国产亚洲a| 亚洲二区视频在线| 亚洲激情女人| 欧美色精品天天在线观看视频| 亚洲制服av| 欧美一区二区女人| 亚洲国语精品自产拍在线观看| 亚洲高清视频一区| 欧美—级高清免费播放| 亚洲欧美清纯在线制服| 久久国产精品免费一区| 亚洲日韩视频| 亚洲一区二区三区在线| 激情亚洲网站| 亚洲伦伦在线| 国语自产在线不卡| 亚洲美女毛片| 国模一区二区三区| 亚洲另类黄色| 国内精品视频在线播放| 亚洲区第一页| 国产主播喷水一区二区| 亚洲肉体裸体xxxx137| 国产免费亚洲高清| 亚洲国产精品久久久久婷婷884| 欧美日韩在线不卡一区| 久久视频在线视频| 欧美日韩精品免费看| 久久米奇亚洲| 国产精品v一区二区三区| 免费观看在线综合色| 国产精品你懂的在线| 亚洲东热激情| 国产一级揄自揄精品视频| 91久久在线| 一区二区亚洲精品国产| 亚洲一区区二区| 日韩视频免费观看| 久久爱www久久做| 亚洲一区影院| 欧美激情区在线播放| 另类酷文…触手系列精品集v1小说| 欧美伦理91| 亚洲第一成人在线| 国产一区自拍视频| 一区二区高清视频在线观看| 91久久精品美女高潮| 久久成人精品无人区| 亚洲欧美一区二区精品久久久| 欧美电影在线观看| 欧美wwwwww| 黄色欧美成人| 欧美伊久线香蕉线新在线| 亚洲欧美日韩国产综合| 欧美日韩国产专区| 91久久精品国产| 亚洲国产一二三| 久久美女性网| 久久久久久久激情视频| 国产日韩欧美另类| 亚洲欧美区自拍先锋| 午夜精品久久久久久久白皮肤 | 9色国产精品| 久久永久免费| 欧美成人激情在线| 亚洲电影免费| 玖玖综合伊人| 亚洲国产美女| 日韩一区二区福利| 欧美日韩一区二区三区高清| 亚洲欧洲一级| 亚洲网站在线| 国产精品久久久久高潮| 亚洲一区二区在线免费观看| 性做久久久久久久久| 国产女人18毛片水18精品| 午夜精品久久久久久久99热浪潮 | 国产字幕视频一区二区| 欧美亚洲综合网| 久久野战av| 亚洲国产精品久久久| 欧美88av| 99精品久久久| 久久国产精品久久精品国产| 国内精品亚洲| 欧美成人官网二区| 9人人澡人人爽人人精品| 午夜在线一区| 一区二区视频免费完整版观看| 欧美成人精品在线播放| 亚洲精品在线视频| 欧美一级大片在线免费观看| 国产一区二区主播在线| 美日韩精品视频| 一本一本a久久| 久久免费国产精品| 亚洲精品国产品国语在线app| 欧美日韩在线不卡一区| 欧美一区在线看| 亚洲国产精品一区二区第一页| 中文日韩电影网站| 伊人久久大香线蕉综合热线| 欧美理论电影在线播放| 亚洲男女自偷自拍| 亚洲大胆女人| 欧美亚洲免费电影| 在线日韩中文字幕| 国产精品久久国产精品99gif| 久久国产精彩视频| 99国产一区| 麻豆免费精品视频| 亚洲欧美春色| 亚洲国产日韩欧美综合久久| 国产精品成人观看视频国产奇米| 久久久.com| 亚洲一二三区精品| 亚洲高清视频一区二区| 欧美一区二区三区四区高清| 99国产精品久久久久久久| 国产亚洲综合精品| 欧美日韩日日夜夜| 男女精品网站| 欧美影院久久久| 亚洲一区久久| 99re6这里只有精品视频在线观看| 久久久综合网| 欧美一区二粉嫩精品国产一线天| 亚洲精选一区| 亚洲第一页自拍| 影音先锋亚洲视频| 国产日本欧洲亚洲| 国产精品午夜电影| 欧美日韩一区二区三区| 欧美国产视频日韩| 噜噜噜噜噜久久久久久91 | 一卡二卡3卡四卡高清精品视频 | 欧美成人蜜桃| 久久久精品tv| 性欧美xxxx视频在线观看| 亚洲小说春色综合另类电影| 亚洲人屁股眼子交8| 尤妮丝一区二区裸体视频| 国产欧美一区二区视频| 国产精品乱码一区二三区小蝌蚪| 欧美日韩国产二区| 欧美日韩免费高清| 欧美日韩福利在线观看| 欧美日本亚洲视频| 欧美日韩国产经典色站一区二区三区| 美国成人毛片| 免费成人在线视频网站| 久久人人爽人人爽爽久久| 久久精品国产亚洲一区二区| 欧美一区二区三区免费观看| 亚洲欧美制服中文字幕| 亚洲欧美久久久久一区二区三区| 亚洲制服av| 久久福利影视| 久久综合久久88| 欧美freesex8一10精品| 欧美激情五月| 欧美日韩在线视频一区二区| 国产精品美女主播在线观看纯欲| 国产精品日韩在线播放| 国产一区日韩二区欧美三区| 在线观看成人av| 日韩视频一区| 亚洲欧美视频在线观看视频| 校园激情久久| 久久一区中文字幕| 欧美成人免费播放| 日韩视频在线免费观看| 亚洲一区二区日本| 久久久久久久一区二区| 欧美成人免费全部|