热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

软件设计原则:正确做小事

设计软件系统需要权衡,很难做出权衡决策。您总是觉得自己正在失去一件事或另一件事,但这不是我们今天要谈论的。我们将谈论几乎总是双赢的小事情。当我找到一个在

设计软件系统需要权衡,很难做出权衡决策。 您总是觉得自己正在失去一件事或另一件事,但这不是我们今天要谈论的。

我们将谈论几乎总是双赢的小事情。 当我找到一个在所有方面都是双赢且没有缺点的解决方案时,我是最快乐的。 在设计系统时,这是您的首要任务。 寻找一些降低复杂性的优雅解决方案。

基于我自己的错误,代码审查以及阅读他人代码的经验,我试图列出一些人们在编写代码时通常不会关注的双赢局面。 人们通常同意这些事情,但是他们肯定不会像以前那样行事。

通过您的行动跟踪您认为的代码质量

在大多数情况下,除非人们自己必须这样做,否则人们不会不同意某件事。 例如,如果您与大多数人谈论编写小型方法,您甚至都不会找到一个不同意的人,但是如果您查看大多数书面代码,您会发现人们不会像他们相信小型方法那样行动。 因此,请注意自己的想法以及实际行为 。 这将帮助您以切实可行的方式实际进行改进。

测试驱动的开发

大多数情况下,测试是通过说它们将捕获回归来出售的,以后您可以更改代码,而不必担心某些事情会破裂以及它的正确性。

但是我认为进行测试驱动开发的最大价值是设计正确的东西。 如果您只专注于在编写实际代码之前最小化编写测试并使它们更简单,则您将意识到您的设计是自动正确的,并且您已经掌握了大多数被认为是好的东西。 像定义良好的小型方法,组织良好的依赖项,更少的耦合以及没有全局状态等。因为所有这些事情都很难测试。

专注于编写简单,较小和简洁的测试,其他所有后续工作。

小型方法/功能

承认这很困难,但要自动执行此操作是一种可学习的技能。 一旦您擅长了,那么很多事情就会变得简单。

描述性变量名称

在计算机科学中只有两件难事:缓存无效和命名。

—菲尔·卡尔顿

这当然是正确的,并且有很大的不同。 使用变量表示概念。 不要将变量用于非显而易见的事情,例如在特殊情况下返回-1。 对具有良好描述性名称的变量具有一致,严格的含义。 正确使用具有单个含义的null。 练习这意味着您将自动编写更好的代码。

这是一篇很好的文章,有一些建议。 ( 20个更好命名的技巧 )

这些都是可以永久改善的事情,一旦您不知不觉地做到,就不会花费很多时间。

欢呼和快乐的编码!

From: https://hackernoon.com/software-design-principles-doing-little-things-right-md203y02



推荐阅读
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • ThinkPHP框架中处理JS和CSS缓存问题的解决方案
    本文探讨了在ThinkPHP框架中,当启用调试模式(APP_DEBUG)时,删除public文件夹中的CSS和JS文件后页面仍然显示旧样式的问题,并提供了一种有效的解决方法。 ... [详细]
author-avatar
孙衍龙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有