论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
编程的艺术:结构之美
编程的艺术:结构之美
饭宝
论坛元老
|
2023-3-10 11:54:04
|
显示全部楼层
|
阅读模式
楼主
主题
1776
|
帖子
1776
|
积分
5328
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
简介
编程是一门艺术,就像绘画和音乐一样,需要创造力和想象力。编程的艺术在于它可以创造出独特的、精美的、功能强大的程序。
在编程中,结构是一种重要的美学概念。好的结构可以使程序更加清晰、易于理解和维护。结构设计是通过分解问题和组织代码来创造良好的程序结构的过程。
良好的程序结构需要满足以下几个方面:
模块化:将程序分解成更小的模块,使得代码更容易理解和维护。
简洁性:代码应该简洁、清晰明了,没有不必要的复杂性和重复代码。
可读性:代码应该易于阅读,有清晰的变量名、注释和文档。
可扩展性:代码应该易于扩展和修改,以适应未来的需求。
性能:代码应该具有高效率、低内存占用等优点。
通过使用这些原则来构建程序结构,可以获得漂亮而强大的程序,这些程序不仅可以帮助我们解决问题,还可以为我们带来创意和乐趣。
下面介绍几种常见的代码结构优化手段
优化手段
在编程过程中,减少代码层级嵌套是一种良好的编程习惯,因为它可以使代码更易读,更易维护,也更易扩展。以下是一些可以帮助减少嵌套的方法
使用早期返回:在函数或方法中,尽早处理错误或异常情况,并返回结果或错误信息。这可以减少嵌套,使代码更易读。
使用函数或方法:将重复或复杂的代码块放在单独的函数或方法中,可以减少嵌套,使代码更易读,也更易重用。
使用布尔表达式:布尔表达式可以帮助你用更少的代码完成同样的功能,从而减少嵌套。例如,使用 if a and b: 而不是 if a: if b:。
使用 try-catch:使用 try-catch块处理异常情况,可以减少嵌套并使代码更易读。例如,使用 try-catch块来处理文件读取时的异常情况。
使用列表推导式或生成器表达式:使用列表推导式或生成器表达式可以将多个循环或条件语句合并成一个语句,从而减少嵌套并使代码更易读。
java中使用Optional可以避免在代码中使用繁琐的null检查,对于多个简单的判null逻辑,使用Optional可以极大的减少代码量。
使用标准化的命名和代码风格来提高代码的可读性和可维护性。
注释:使用清晰和详细的注释来解释代码的目的和实现细节。
通过这些方法,开发者可以编写出具有良好结构的代码,从而提高程序的可读性、可维护性和可扩展性。
用例举例
校验提前返回
校验提前返回的方法是指在函数或方法开始时,先进行一些校验操作,如果校验不通过,则直接返回,不再执行后续的代码。这种方法的好处是可以减少if判断嵌套的层数,使代码更加清晰和易于理解。
如以下嵌套层级较深的代码,看着确实难受,并且后期修改很不友好
public boolean checkStudent(Student student) {
if (student != null) {
if (student.getAge() >= 18) {
if (student.getGrade() >= 60) {
if (student.getMajor().equals("Computer Science")) {
if (student.getGender().equals("Male")) {
return true;
}
}
}
}
}
return false;
}
复制代码
可以看到,以上代码使用了多层的if嵌套语句,虽然可以实现检查学生是否符合选课要求,但这样的代码会让人感到混乱,可读性较差,而且增加了代码出错的概率,同时后期如果增加其它校验很不方便,会造成嵌套层级越来越深。因此,为了更好的代码可读性和更高的代码质量,可以根据校验提前返回的原则对代码进行优化。
优化后结果如下:
public boolean checkStudent(Student student) {
if (student == null) {
return false;
}
if (student.getAge() < 18) {
return false;
}
if (student.getGrade() < 60) {
return false;
}
if (!student.getMajor().equals("Computer Science")) {
return false;
}
if (!student.getGender().equals("Male")) {
return false;
}
return true;
}
复制代码
Optional减少判null层级,简化代码
使用Java中的Optional类可以简化代码,避免显式检查null值从而避免嵌套的if语句,让代码更加简洁易读。以下是一个使用Optional类的示例代码
public boolean checkStudent(Optional<Student> student) {
return student
.filter(s -> s.getAge() >= 18)
.filter(s -> s.getGrade() >= 60)
.filter(s -> s.getMajor().equals("Computer Science"))
.filter(s -> s.getGender().equals("Male"))
.isPresent();
}
复制代码
注意:使用Optional类需要慎重考虑,因为它并不总是适用于所有情况。当使用Optional类时,应确保代码的可读性和可维护性得到了提高,并且仔细处理空值情况。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
饭宝
论坛元老
这个人很懒什么都没写!
楼主热帖
53基于java的资源博客论坛系统设计与实 ...
zotero+坚果云实现多pc端及iPad同步管 ...
Android——一个简单的记账本APP ...
天涯神贴合集500篇(2023最新) ...
需求:清空三个月前的操作日志,并生成 ...
面试官:@Configuration 和 @Component ...
Python潮流周刊#5:并发一百万个任务要 ...
nginx 常用指令配置总结
【分布式计算】学习笔记(期末复习) ...
企业级数据治理工作怎么开展?Datahub ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
虚拟化与私有云
Mysql
人工智能
linux
快速回复
返回顶部
返回列表