KISS原则(Keep It Simple, Stupid):可以用来Dis 架构师的过度设计
KISS(Keep It Simple, Stupid)原则,即“保持简单,愚蠢”原则,是一种提倡在设计过程中保持简洁性的软件开发理念。这个原则鼓励开发者避免不必要的复杂性,专注于最直接、最清晰的解决方案。
肖哥弹架构 跟大家“弹弹” 代码设计技巧,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
历史热点文章
- 数据访问对象模式(Data Access Object Pattern):电商平台商品管理实战案例分析
- Holder模式(Holder Pattern):公司员工权限管理系统实战案例分析
- 一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
2. KISS原则设计图:
KISS原则因为它是一种设计哲学而非具体的设计模式。不过可以用以下简化的类图来说明遵循KISS原则的设计理念:
3. KISS原则解决什么:
KISS原则解决了过度设计的问题,帮助开发者避免创建过于复杂、难以理解和维护的系统。
4. KISS原则特点:
- 简洁性:代码和设计应该尽可能简单。
- 易于理解:新团队成员应该能够快速理解代码。
- 易于维护:简单的设计更容易维护和扩展。
5. KISS原则缺点:
- 过度简化:在某些情况下,为了追求简洁可能会忽略必要的功能和性能。
- 忽视复杂性:有些问题本质上是复杂的,KISS原则可能不适用。
6. KISS原则使用场景:
当面临设计决策时,如果存在多种解决方案,应优先选择最简单直接的那一个。
7. KISS原则案例
7.1 简化的电子邮件发送功能案例
考虑一个需要发送电子邮件的功能,重构前可能包含复杂的配置和多个类。
重构前:
public class EmailService {
private MailServerConfig config;
public EmailService(MailServerConfig config) {
this.config = config;
}
public void sendEmail(Email email) {
// 复杂的邮件发送逻辑
}
}
public class MailServerConfig {
// 复杂的配置选项
}
重构后:
public class EmailService {
// 私有属性,用于存储邮件服务器配置
private String host;
private int port;
private String username;
private String password;
// 构造器,用于初始化邮件服务器配置
public EmailService(String host, int port, String username, String password) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
// 发送邮件的方法,参数包括收件人、主题和邮件正文
public boolean sendEmail(String to, String subject, String body) {
try {
// 邮件发送逻辑(使用Java Mail API)
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setFrom(new InternetAddress(username));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(body);
// 实际的邮件发送代码会在这里
System.out.println("Sending email to " + to);
// 邮件发送成功
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
public class Client {
public static void main(String[] args) {
// 创建邮件服务实例
EmailService emailService = new EmailService("smtp.example.com", 587, "user@example.com", "password");
// 使用邮件服务发送邮件
boolean success = emailService.sendEmail("recipient@example.com", "Test Subject", "This is a test email body.");
if (success) {
System.out.println("Email sent successfully!");
} else {
System.out.println("Email sending failed.");
}
}
}
KISS原则与单一职责的区别
KISS原则:
- 定义:KISS原则鼓励开发者在设计和实现时保持简洁性,避免不必要的复杂性。它是一种普遍的设计哲学,适用于任何类型的项目和问题。
- 目的:KISS原则的目的是减少系统复杂性,提高系统的可理解性和可维护性。
- 应用:KISS原则通常用于指导整个设计过程,包括需求分析、系统架构、编码实现等。它建议在所有可能的解决方案中选择最简单直接的一个。
- 特点:KISS原则强调简单性,但并不排斥复杂性。它认识到在某些情况下,复杂性是不可避免的,但应尽可能控制在最小范围内。
单一职责原则(SRP):
- 定义:单一职责原则是面向对象设计原则之一,主张一个类应该只有一个引起它变化的原因,即一个类只负责一项职责。
- 目的:SRP的目的是降低类之间的耦合度,提高代码的可重用性和可维护性。
- 应用:单一职责原则通常应用于类级别的设计,确保每个类都有明确的职责,并且当需求变化时,只影响有限的代码区域。
- 特点:SRP强调职责的划分,它关注的是职责的单一性,而不是实现的复杂性。一个类可能仍然复杂,但它只处理与其职责相关的复杂性。
区别:
- 关注点:KISS原则关注整体设计的简单性,而单一职责原则关注单个类或模块的职责清晰。
- 应用层面:KISS原则可以应用于整个项目,包括架构、设计、实现等,而单一职责原则主要应用于类和模块的设计。
- 目标:KISS原则旨在通过简化设计来提高系统的可维护性和可理解性,单一职责原则旨在通过职责划分来降低耦合度和提高代码的可重用性。
- 实现方式:KISS原则可能涉及到系统的多个方面,包括算法选择、数据结构设计等,单一职责原则主要通过类的设计来实现,如将功能拆分到不同的类中。
8. 参考开源框架:
- 许多开源项目,如Linux操作系统的内核开发,都遵循KISS原则,保持代码的简洁性。
- Spring Boot - 一个Java框架,简化了基于Spring的应用开发,鼓励创建独立、可测试的组件。
9. 总结:
KISS原则是软件开发中的一个重要指导原则,它提醒开发者避免不必要的复杂性,专注于创建简单、直接的解决方案。遵循KISS原则有助于提高代码的可读性、可维护性和可扩展性,同时减少引入错误的风险。虽然在某些情况下可能需要处理复杂问题,如果具备不可变更性,那么KISS就是一个可选的方案。
历史热点文章
转载自:https://juejin.cn/post/7390815289992298550