YAGNI原则——你不会需要它

2024-06-23 03:18
文章标签 yagni 原则 不会 需要

本文主要是介绍YAGNI原则——你不会需要它,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

YAGNI

英文:You Aren't Going to Need It

中文:你不会需要它

是什么

只写所需最低限度的代码。不能以“可能会用到”为动机编写代码,我们要在需要的时候写需要的代码。坚持只写当前需要的代码。

为什么

即使事先写好了一大段代码以应对各种情况,这些代码大多也派不上用场。

编程针对的是特定需求,所以再怎么追求通用性,总有无法满足的情况。考虑代码的扩展性,有时人们会把自己认为有用的东西设计进去。可惜这些预想大多不会成真,不能成真,就意味浪费了时间。

况且将扩展性纳入考虑的范围会进一步使代码变得复杂,无用的代码混在其中,使代码可读性变低,难以维护。

怎么做

比起通用性,我们更重视单纯性。

先把通用性带来的可重复使用的特性和扩展性放到一边,将“能用”放入第一位。

在多种设计方案的选择中,我们重点要看的是设计方案的单纯性,而不是通用性。不要选择标榜通用性的复杂方案,要选择以具体需求为基础的简单方案。即使需求增加,功能需要扩展,简单的代码比通用的复杂代码更容易修改。

YAGNI的试用范围

除代码之外,YAGNI还适用于软件的功能。

丰富的功能来看上去很吸引人,但仅凭预想创建出的“没有必要的”功能不但没有人使用,还会令软件整体使用方法复杂化。

这篇关于YAGNI原则——你不会需要它的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086119

相关文章

BD错误集锦8——在集成Spring MVC + MyBtis编写mapper文件时需要注意格式 You have an error in your SQL syntax

报错的文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.yuan.dao.YuanUserDao"><!

[最全]设计模式实战(一)UML六大原则

UML类图 UML类图是学习设计模式的基础,学习设计模式,主要关注六种关系。即:继承、实现、组合、聚合、依赖和关联。 UML类图基本用法 继承关系用空心三角形+实线来表示。实现接口用空心三角形+虚线来表示。eg:大雁是最能飞的,它实现了飞翔接口。 关联关系用实线箭头来表示。当一个类"知道"另一个类时,可以用关联。eg:企鹅需要"知道"气候的变化,需要"了解"气候规律。 聚合关

在WinCE的C#编程中,需要静态调用C++的动态库,需要添加using System.Runtime.InteropServices

using System.Runtime.InteropServices;         [DllImport("Win32DLL.dll", EntryPoint = "WriteREG_SZToRegTCHAR")]         private static extern bool WriteREG_SZToRegTCHAR(int iFlag, string regKeyP

读书·架构整洁之道(原则篇)

十四年不修行,只读书,一年通幽。二十日不解碑,只静坐,一日看尽前陵碑 ----- 猫腻《择天记》 一.设计与架构究竟是什么?二.SOLID设计原则SRP:单一责任原则(Single Responsibility Principle)OCP:开闭原则(Open Closed Principle)LSP:里氏替换原则(Liskov Substitution Principle)ISP

Selenium WebDriver 3.0 需要注意的事项

首先,要使用WebDriver 3.0 的话 请使用JAVA 8(必要)   其次,由于W3C标准化以及各大浏览器厂商的积极跟进,自WebDriver 3.0 之后,Selenium不再提供默认的浏览器支持. 也就是说 如果你要使用Firefox, 就需要用到Mozilla自己的驱动实现: geckodriver ,这里是github下载地址 https://github.com/mozil

H5测试需要关注的测试方面

原文转自:https://blog.csdn.net/u011695652/article/details/77932393 Html5是近五年来风头最劲的前端界面语言,不管是在PC端和手机端都得到了大幅度的使用,相信不久的将来将会替代Html4成为所有主流WEB界面的前端编写语言。而从H4升级到H5,还是有很多不同特性。且在插件的应用上也大大简化。下面我们就来探讨一下H5测试时应考虑的测试

「Debug R」如何不需要重新启动R/Rstudio就可以升级已经加载的R包

当我们已经加载了一个R包,例如ggplot2时,然后此时你发现ggplot2目前出最新版了,你心血来潮想要升级它,于是你输入了install.packages("ggplot2"), 结果弹出了下面这个界面 一个神奇的界面 它强烈建议你重启一下Rstudio,并且说到Rstudio会非常智能的重启并继续你的任务。但是根据我多年踩坑的经验,它通常没有那么智能。即便它有它说的那么智

Html表格table还是需要添加一些标签进行优化,可以添加标题caption和摘要table summary

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>认识table表标签</title><style type="text/css">table tr td,th{border:1px solid #090;//为表格添加边框:像素是

Spring框架的核心原则和IoC容器介绍

Spring框架是一个开源的应用程序框架,它遵循以下核心原则:   1.Inversion of Control(控制反转): Spring框架通过IoC容器管理对象的生命周期和依赖关系,而不是由程序代码直接创建对象。这样可以降低组件之间的耦合度,提高系统的灵活性和可维护性。 1.面向切面编程(AOP): Spring框架支持AOP,可以在不修改源码的情况下,增加新的功能,如日志、事务管理等

华为MetaERP会不会是国产高端ERP的开始?

最近华为在官微发表了一篇名为《华为MetaERP替换的奇迹:一场软件突围战,一场质量保卫战》的文章,这篇文章详细描述了华为在面对美国制裁后,如何成功替换其关键的ERP系统。制裁导致华为无法继续使用甲骨文公司的ERP系统,迫使华为自主开发MetaERP系统。整个替换过程涉及多个复杂环节,包括从系统的“解耦”到“换芯”,并最终在全球175个国家和地区同时成功切换。这一过程被比喻为“在飞行中换轮胎”,展