原作:Joseph
Ottinger, 来自近日的theServerSide,本文是译文。
原作网址:http://www.theserverside.com/news/thread.tss?thread_id=42598
Empathy
Box在blog中介绍了编程应该注意的5个问题,这篇文章实际表述了编程时应引起注意的很重要的6个思想:
快速失败;写更少的代码(不要让自己重复);程序是写给人看的;做正确的事情;消减状态;了解你的“创造”
(fail
fast, write less code (and don't repeat yourself), computer programs
are for people, do the right thing, reduce state, and know your
'stuff.')
快速失败:当程序出现问题时,产生大的、可见的、不可忽视的异常。以防止不明显的bug一遍遍逃过QA的检查。把隐藏在深处的问题暴露出来。
写更少的代码(似乎是理所当然的):去除冗余,即把程序所要解决的问题展示得更加清晰、明了。
程序是写给人看的:即“学识编程”(Literate
Programming),我们程序的读者是其他的人而不是编译器。我们知道c/java/lisp/haskell这些编程语言并不比简单的汇编更加强大,之所以我们使用它们,是因为它们的表述更加清晰,更不容易范些低级的错误。没有任何一个程序能做到只能用一种书写,而不能用另一种,而且,这些语句,最终都要被翻译成机器指令(有些在运行期,有些在编译期,不过都不重要),如此说来,我们使用高级程序设计语言的唯一理由就是——和人进行交流。Don
Knuth写下了这个想法,并把它命名为“Literate
Programming”,他还设计了一个叫WEB的系统,他的想法非常出色,但他的实现却很糟糕。他的想法是:在程序中加入一篇说明程序是如何运行的的文章。
做正确的事情:实际编程去让正确的程序去做正确的事情,而不是写一个看似正常工作程序。
我知道最佳的解决方案,但需要改变许多东西。在我的经验里,经常有让你做错误事情的机会:计划、经理、合作者,甚至是参与到项目中来的客户,这些群体都想尽快看到你的可以工作的程序,他们并不关系你是如何写这些程序的。但除了事实上写这些程序的程序员外,没有人知道,在编码过程中所作的权衡、割舍。然后隐藏在代码背后的问题就会像圣诞节的幽灵一样以P0
bugs的形式出现(P0
bug:致命缺陷——译者注)。最终,我不得不顶着上面巨大的压力,带给公司更多的花费。让早就该做好的程序去做正确的事情。
消减状态:即简化代码,尤其要注意并发的情况,这时会出现如:x.equals(x)这样的奇怪代码,而且在一些特殊的情况下会返回false,当然,这取决于x.equals(Object)是怎样编码的。
了解你的“创造”:正如可工作的解决方案总是你尝试的最后一个解决方案一样,无法诊断的bug总是存在于你还不了解的软件层中。你必须去了解直接包裹在你代码周围的那些层——对于大多数程序员来说,这可能意味着要从操作系统开始。如果你从事底层编程,你很可能还要了解一些计算机体系结构。但这个观点比直接找到隐藏的bug要大,主要用来清除那些不易解决的问题,一个了解操作系统内核的人,一定有能力去解决他们遇到的绝大多数问题。
分享到:
相关推荐
本资料“Java并发编程设计原则和模式”深入探讨了如何在Java环境中有效地进行并发处理,以充分利用系统资源并避免潜在的并发问题。 一、并发编程基础 并发是指两个或多个操作在同一时间段内执行,但并不意味着这些...
本资源"Java并发编程_设计原则和模式(CHM)"聚焦于Java语言在并发环境下的编程技巧、设计原则以及最佳实践模式。 一、并发编程基础 并发编程涉及多个执行单元同时运行,这些单元可能是线程或进程。在Java中,主要...
6. **原子性操作与CAS**:Java提供了一组原子变量类(AtomicInteger、AtomicLong等)和Unsafe类,它们支持无锁编程和CAS(Compare and Swap)操作,用于实现高效且线程安全的更新操作。 7. **并发异常处理**:书中...
在这一背景下,专家和教育工作者对编程教学的理念、原则与策略进行了深入探讨。 首先,编程教育不仅仅是教授编程技能,更是培养学生解决问题的能力,这一点在中小学阶段尤为重要。编程教育的核心目的之一是培养学生...
华为规范化编程的编程原则 华为规范化编程的编程原则是指在软件开发过程中,为了提高代码的可读性、可维护性和可靠性,而制定的编程规则和规范。这些规则和规范旨在使代码更加简洁、易读、易维护和高效。 1. 排版 ...
《Java并发编程设计原则与模式》是Java并发编程领域的一部经典著作,作者Doug Lea在并发编程领域有着深厚的造诣。这本书详细介绍了如何在Java环境中有效地设计和实现并发程序,涵盖了众多关键概念、设计原则和实用...
《Java并发编程 设计原则与模式 第二版》是一本深受程序员喜爱的经典书籍,由Addison Wesley出版。这本书深入探讨了Java平台上的多线程编程技术,为开发者提供了丰富的设计原则和模式,帮助他们理解和解决并发环境中...
文档中列举了多个理由,强调了编程规范的重要性: 1. **代码质量**:高质量的代码是优秀信息技术产品的基础,而遵守编程规范则是实现高质量代码的第一步。 2. **软件维护成本**:软件在其整个生命周期内的维护成本...
面向对象编程设计原则是软件开发中的核心指导思想,旨在提高软件的可维护性和可复用性。以下是对这些原则的详细解释: 1. **单一职责原则(SRP)**:该原则指出,一个类或模块应只有一个明确的责任或变更的原因。这...
然而,我可以根据【标题】和【描述】中的“PLC编程的基本原则”来生成相关知识点。 PLC编程,即可编程逻辑控制器编程,是一种在自动化领域广泛使用的程序设计。它涉及一系列的基本原则,这些原则对于保证控制系统...
嵌入式系统C语言编程是一种在资源受限的硬件平台上进行软件开发的实践,它要求程序员不仅要掌握C语言的基本知识,还要遵循一系列特定的原则和最佳实践,以确保开发的嵌入式程序运行稳定、效率高,同时易于维护和扩展...
6. **模块化设计**:将复杂的控制逻辑拆分成独立的模块,每个模块负责特定的任务,方便重用和测试。 7. **程序的可扩展性**:设计程序时应考虑未来可能的扩展需求,确保添加新功能时不会对现有结构造成过大影响。 ...
本文将详细解读极限编程的十二大原则,这些原则有助于提高开发团队的效率,确保软件质量和适应性。 1. **计划的制定**:在极限编程中,计划不是一次性的,而是持续的过程。项目规模、功能优先级、版本发布日期应随...
以下是PLC梯形图编程的七个基本原则: 1. 外部输入/输出继电器、内部继电器、定时器、计数器等软器件的逻辑触点可以多次重复使用,无需用复杂的程序结构来减少触点的使用次数。 在梯形图中,逻辑触点可以重复使用...
6. **并发编程**:随着多核处理器的普及,并发编程变得越来越重要。书中可能讲解线程安全、锁机制、异步编程模型等并发编程的核心概念。 7. **软件工程**:编程不仅是技术活,也是项目管理的过程。书中可能会涉及...
六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一职责原则(Single Responsibility Principle) 单一职责原则是指一个类只负责一项职责。问题来源于类 T...
6. **线程局部变量(ThreadLocal)**:为每个线程提供独立的变量副本,避免共享状态引起的并发问题。 在实际编程中,我们还需要关注并发工具类,如Semaphore(信号量)用于控制同时访问特定资源的线程数量,...