基本原则:
1、KISS原则
KISS:Keep it simple and stupid.(保持简单和直接原则)
任何事情都应该尽可能简单,而不是稍微简单一点。
—— Albert Einstein,theoretical physicist
对于程序员来说,关注简单性可能是最困难的事情之一,并且这是一个终生的学习经验。
—— Adrian Bolboaca
2、YAGNI原则
YAGNI:You Aren't Gonna Need It!(不需要原则)
YAGNI原则向投机取巧和过度设计宣战,它的主旨是希望你不要写目前用不上,但将来也许会需要的代码。
总是在你需要的时候再实现它们,而不是在你只是预见到你需要它们的时候实现它们。
—— Ron Jeffries
建议:在你确定真的有必要的时候再写代码,那时再重构仍然来得及。
3、DRY原则
DRY:Don't repeat yourself!(避免复制原则)
复制和粘贴是一个设计错误。
—— David L.parnas
复制是非常危险的,其原因显而易见:当一段代码被修改的时候,也必须相应地修改这段代码的副本,不要抱着不修改副本的期望,可以肯定的是,一定要修改副本。任何复制的代码片段迟早会被忘记,并且会因为漏改代码的副本而产生bug。
在一个系统内部,任何一个知识点都必须有一个单一的,明确、权威的陈述。
DRY原则同样适用于文档、项目、测试计划和系统的配置数据。
4、信息隐藏原则
5、高内聚原则
6、松耦合原则
7、小心优化原则
8、最少惊讶原则(PLA)
9、童子军原则
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/1435532.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
软件设计基本原则
基本原则: 1、KISS原则
KISS:Keep it simple and stupid.(保持简单和直接原则)
任何事情都应该尽可能简单,而不是稍微简单一点。 —— Albert Einstein,theoretical physicist
对于程序员来说࿰……
WSL2通过OpenCV调用并展示本机摄像头的RTSP视频流
文章目录前言安装 CMake安装 OpenCV 和 FFmpeg启动 Windows 本机的 RTSP 视频流查看本机摄像头设备开始推流开放本机防火墙用 OpenCV 接收视频流结果展示前言 本篇博客的由来如上图哈哈,WSL2 相关安装教程可以参考我之前的博客:Win11安装WSL2和Nvidia驱动……
编程日记2023/3/2 13:23:58
彻底解决不要脸的360更改浏览器主页
周末将电脑借给同事使用了,回来发现浏览器主页被360更改了,下面说说怎么解决
1.IE浏览器/工具/internet选项 把主页更改了(基本没用)2.右键浏览器图标/属性/快捷方式/目标 看看是不是在.exe后面有没有指向360的目标&#……
联想电脑重装系统F12开机项选择无USB启动选项
原因为BIOS启动不包含USB启动设备,解决方法如下:
1.开机F1进入BIOS
2.选择启动/主要启动顺序,可以看到USB启动选项在未包含的启动项里,这时按、-键选择相应USB启动项,按X键添加至启动项选项里
3.自动启动顺序也做相……
c++创建动态二维数组
话不多说,上代码
using namespace std;
int main(){ int n; cin>>n; //定义二维数组 int **pnew int *[n]; for(int i0;i<n;i){ p[i]new int [n]; for(int j0;j<n;j){ cin>>p[i][j]; ……
c++实现数组排序
话不多说上代码
using namespace std;
//插入排序 void crpx(int a[],int n){ for(int i1;i<n;i){ int tempa[i]; int ji; while(j>0&&temp<a[j-1]){ a[j]a[j-1]; j–; } a[j]temp; ……
c++非零元素排序
using namespace std; void swap(int &a,int &b){ int ca; ab; bc; } void a(int a[],int n) { int s; for(int i0;i<n;i){ si; for(int ji;j<n;j){ if(a[j]!0){//选择第一个非零元素提至最前 ……
DevC++导入项目
DevC打开项目时发现只能打开.cpp和.h后缀文件,没有正常打开项目 这时选择导入 就可以正常打开项目了…
c++通过递归方式实现字符串倒序
#include <iostream> #include <string.h> using namespace std; string dx(string a){ if(a.length()1){ return a; } else if(a.length()2){ return a.substr(1,1)a.substr(0,1);//substr(a,b)指字符串从下标……
【JAVA程序设计】【C00108】基于Springboot+Vue前后端分离的民宿短租预约管理系统
基于SpringbootVue前后端分离的民宿短租预约管理系统项目简介项目获取开发环境项目技术运行截图项目简介
基于Springbootvue开发的民宿短租预订管理系统,共分为三种权限:系统管理员、商家、用户 管理员角色包含以下功能: 个人中心、修改密码……
反序列化渗透与攻防(五)之shiro反序列化漏洞
Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……
vue2+vue3
vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 ࿰……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
13、Qt生成dll-QLibrary方式使用
Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirsÿ……
基于mapreduce 的 minHash 矩阵压缩
Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……
关于hashmap使用迭代器的问题
keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 package com.test2.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;public class mapiterator……
编程日记2023/4/16 14:50:37