编程-务实的方法

史黛西·怀斯(Stacy Wyss)在Unsplash上​​的照片— https://unsplash.com/photos/-aDl1z8_nGY

我喜欢给自己一种幻想,即我以务实的方式处理许多事情。 我喜欢这个概念。 因此,我深入探讨了编程中的实用概念。

这是安德鲁·亨特(Andrew Hunt)和戴维·托马斯(David Thomas)撰写的“实用程序员”的结论的摘要,并补充了我的一些想法。

  • 介绍
  • 内容
  • 语用哲学
  • 务实的方法(编程时)
  • 基本工具
  • 语用偏执
  • 弯曲或折断
  • 编码时
  • 项目前
  • 务实项目
  • 有用的链接和积分

“只要您认为一种理论是唯一可能的,就应以此为标志,表明您既不了解该理论,也不了解它打算解决的问题。”

―卡尔·R·波普尔


本书已经有很多摘要。 但是这些概念很重要,值得重复。 最后,您还可以找到包含其他摘要的列表,以备不时之需。

这本书分为以下几部分:

  1. 务实的哲学
  2. 务实的方法
  3. 基本工具
  4. 语用妄想
  5. 弯曲或折断
  6. 在编码时
  7. 项目前
  8. 务实的项目

在讨论它的概念之前,我想回顾一下它的定义并引用Wikipedia:

实用主义认为思想是预测,解决问题和采取行动的工具或工具,并拒绝思想的功能是描述,表示或反映现实的观点。 实用主义者认为,大多数哲学主题(例如知识的本质,语言,概念,含义,信念和科学)都应从其实际使用和成功的角度来加以最好的理解。

在本书的第一章中,将介绍一般概念和方法,例如

  • 享受你的工作
  • 寻找解决方案,而不是找借口
  • 解决问题发生的地方,并从源头上而不是结果上进行工作
  • 放大查看大图并欢迎更改
  • 建立质量标准。 跟着它。
  • 知识就是力量。 尽可能多地每天学习。 多样化。
  • 有效沟通。 了解您的东西并了解您的听众。

始终保持干燥(不要重复自己)。 避免重复代码,信息或文档。 每条知识都应该是系统中单一,明确,权威的表示。

遵循正交性原则。 设置少量的原始构造,可以以几种方式进行组合。 它允许:

  • 减少错误数量
  • 在应用程序中轻松划分功能
  • 划分团队更合乎逻辑
  • 测试更快

使用追踪项目符号和原型来评估环境并相应地调整其工具。 示踪子弹(可以是算法,技术,语言或库)应渗透到更大的区域,而原型设计在探索项目的更集中区域时可以提供很好的反馈(可以是现有系统中的新功能,外部数据/工具的内容) ,用户界面设计)。

射击示踪剂子弹以探索,原型学习!

关于工具坚持强大的基础。 明智地使用GUI。 它们可能更容易入手,但受到限制。 在速度和机会方面,纯文本始终是最重要的。 选择一个涵盖基础知识(可配置,可扩展,语法突出显示等)的编辑器,并始终使用源代码/版本控制。

用于调试:

  • 专注于解决,而不是责备
  • 深入研究问题的根源,不要使用快速修复
  • 通过消除找到根源
  • 尝试重现该错误(确定核心问题)
  • 使用橡皮鸭(向某人解释错误)

旨在编写代码,即编写代码(例如使用JSX)。

不要高估自己。 没有人独自编写完美的代码。 在绝对必要的地方创建断言。 异常仅应用于特殊问题。

  • 得墨law耳定律:最小化耦合,因为每种组合都会导致意想不到的结果。
  • 动态配置:将代码中的抽象和详细信息放入元数据中。 针对一般情况和模块细节的程序。
  • 并发设计:尽可能地提高并行度。
  • 将代码库分为MVC结构:划分功能并使用订阅机制仅在需要时执行操作。
  • 使用黑板实施:存储活动对象并在必要时检索数据。

巧合地故意编写程序。

  • 永远知道你在做什么
  • 只依靠可靠的东西
  • 记录您的假设
  • 不仅测试您的代码,还测试您的假设
  • 经常及早进行重构。 不要添加功能。 重构之前要进行良好的测试。
  • 不要使用向导代码
  • 测试单位并根据合同进行测试。 设置测试环境以使其自动化。

解决难题的关键是要认识到施加在您身上的约束并认识到您拥有的自由度,因为在这些方面您将找到解决方案。

永远不要为了专业而牺牲大局。 尽可能提醒自己全局。

  • 通过功能而非“工作职能”组织团队,并让他们在
  • 无处不在的自动化:构建项目,测试,统计信息等。
  • 始终测试:早期,经常,自动
  • 始终文档:在代码中和外部。 使用与编写代码时相同的原则
  • 期望伟大:超越用户的期望

感谢您阅读我的文章! 随时留下任何反馈!


  • Hu HugoMatilla的《实用程序员》摘要
  • Near Nearsoft的《实用程序员》摘要