软件工程师们已经学到的艰难方法是某些代码是如此糟糕你要做的就是替换掉。替换代码会制止花费,可是有一个强烈的趋向是避免或者延迟替换。很难有热情去除一整个项目的内脏,即使你隔绝了将用一大批判例案件终结和调试完的问题。
重整是一个允许你改变未经真正的外在功能性改变就被完成而给出结果的方法,这是个巧妙的妥协,胜于给软件内调。你简单的重新设计就可以更容易的操作。因为每一步重整操作保留了软件功能性的一致,这容易测试,而系统也保留了功能。多次的重整还使得代码更简单、更清晰、更容易维护,还使它更容易增强和修正你早就想修正的bug。以我的经验看来,
重整通常比大改软件更快。在很多案例中重整也比强力试图做出的改变更加可靠。
重整最经常是将像Java或者C++应用于代码中,但是这不难看出它怎样应用于CSS、网页版式还有其他网路设计的外观中。能学到更多关于网站设计重整的资料。
测试驱动开发
测试驱动开发,或者TDD,不是一个十年以上的软件工程技术。事实上,测试和调试代码失败是众多电脑程序员一代代遗留下来的不利遗产中的一个。像他们的前辈一样,许多网站开发者今天趋于延迟测试知道最后时刻到来,直到批评潮涌而来才发现太晚而无法改变了。用户不得不接受有很多bug的软件,不管它是来自架上产品的打包中还是从互联网泛滥下来的。
TDD是一项灵活的开发方法,那就是说你能够像早期票选那样常用!当你在设计一个网页时,确信你的目标平台是什么样的还有是否你的网页会在上面运行的很好。收集的必要条件,建立一个网页的实体模型,找出他是否在那些平台上也运作。如果你决定了你的网站必须在Safari上也可见,从第一天起在Safari下测试它。(对一个商业项目来说,一台Mac
mini 的花费也是一个在你真的发现这些问题与safari共存代价中的微小的成本了。)
一个测试用户界面(包括网站界面)的通病是富有经验的用户不倾向于犯明显的错误。真正的用户才那么做,然而,精力充沛的面对这些错误是很重要的。在不像你一样紧密熟悉网站导航安排的人群中测试你的站点。那个失败的话,自己吗自己的网站。如果一个用户在你的检验过程里中途迷路是怎么回事?有些人会。如果一个用户试图在数字填充区域输入文字NO是怎么回事?如果一个用户在你的邮编代码框内输入城市名是怎么回事?
就像重整,TDD是代码应用中最普遍的,但是惯例也扩充网页设计。学习更多关于测试驱动开发的资料。
总结
软件设计是一个许多最佳的研究员都承认他们还在寻求和尝试中学习的活跃领域。在这个专栏里我曾讨论过得大多数最佳惯例都是数年的反复试验的结果,但是随着时间推移他们形成了一个软件工程的标准,那是比在编译器上的一群猴子的重击要高级一点,希望开发出下一代的UNIX®。
作为一个网站设计和开发人员,你会从那些在你之前就有的辛苦的得到的最佳惯例中获益。不要让说网站开发不是真正的软件开发的人挡住你的去路。基础的方法论仍然是常用到。
如果这里的最佳惯例你感兴趣,看资料部分获得更多相关知识。紧记大多数软件开发书籍和文章都假设熟悉一两种程序语言;考虑获得足够的熟悉去阅读案例。甚至如果你不想学习一项程序语言,你将发现获得一些有助于软件开发者更好的开发更大项目的工具和惯例是值得的。
行动项:对你的工作引以自豪,抓住每次你得到的改进机会。网页已经变成一个数百万人日常生活的主要功能构成;你,网络开发者,是处于一个使那部分人每个人活得更好的位置——所以加油干!
随机,我向你道别
在2001年3月13日,我在开发者园地上出版了The cranky user系列的第一个专栏。在这6年期间我已经写了75篇 cranky
user专栏——如果你把这篇也算进去就是76篇。对促进以用户为中心的设计和一次改变一个网站的改变网络世界发展我不遗余力,今天我收到一封来自一个在线经纪人业务的署名给”亲爱的可怜的笨蛋“的邮件。喔,这结果是好像我使用不以用户为中心的在线旅游网站好像在线出售机票一样。作为结果,我耗费了我和作为一个共同协作者的我的几小时时间去解决他们留给我的这些杂乱事。这导致我怀疑我的专栏也许不能被广泛看到或者被我所期望的那样受关注。
所以,这里有一个想法:为什么当过去的大约6年时间里我写的所有这些问题都已经被修正了的时候,你们这些网虫不通告我?当那一天到来时我将穷追至新的问题写出来。同时,你可能发现我在开发者园地一次次的写作,但是我正成为Cranky的日子结束了。
这非常之有趣。我想要感谢所有在专栏发表评论的各位,不管是肯定的还是否定的评论。
以下就不译了:P
资 料
Learn
- The cranky user series (March 2001 through July 2007): Read all of Peter Seebach's columns in this series.
- "When Web pages don't work" (Chris Paul, developerWorks, February 2005): Reveals some of the ways Web designers can unwittingly alienate potential users.
- "Demystifying Extreme Programming: Test-driven programming" (Roy W. Miller, developerWorks, April 2003): A primer on TDD.
- Manifesto for Agile Software Development: Agile software development (also known as extreme programming) is one of many attempts to reformulate views of what software development is like; it seems that it might be well-suited to the always-live, always-changing environment of Web development.
- Refactoring Home Page: Refactoring is a technique for improving software. The same technique could be applied to many Web pages with excellent results.
- "Javascript Refactoring For Safer Faster Better AJAX" (Pavel Simakov, Software Secret Weapons, May 2007): Offers a concrete example of how to refactor a Web page.
- CSS Specification 2.1: Learn more about CSS.
- Edward Tufte's home page: Edward Tufte's work on displaying information to make it more accessible to readers is of inestimable value to Web designers.
- JND.org: The homepage of Don Norman, whose The Design of Everyday Things is yet another example of a rich and well-developed resource that most Web designers have never been encouraged to study.
- Improve Your Java Code Quality: Andrew Glover's code quality forum is a developerWorks community resource for improving the quality of your Web applications.
Discuss
- developerWorks blogs: Get involved in the developerWorks community.
没有评论:
发表评论