千里之行,始于足下,千里之堤,毁于蚁穴,做好设计的第一步就是写好你的代码,博文8 Signs your code sucks总结了代码中第一个感觉的臭味,让你能够于细微之处发现软件的质量问题。
1.方法内代码超过一个电脑屏幕:
一个方法只应该执行特定的任务,一个方法不应该包含一些这样的逻辑,例如判断用户名字段包哈巴的数据是否有效,是否存在等。如果一个方法代码大得超过一个屏幕,那么这是表明它做了太多的事情,需要切分。
2.你在重用变量:
除非你工作于嵌入式领域,否则内存是便宜的,不要做内存的守财奴,要注重可维护性。
3.你直接访问request/session :
这和具体应用服务器环境绑定,难于测试,所有应用数据应该直接解耦Session/request,保存到Bean中,通过 bean的 getters 和 setters方法, 创建使用者访问数据的合约,这将大大帮助代码的可维护性,个人补充,不要把类中的Collection字段直接通过Collection getCollection来暴露给外界,通过方法封装对Collection的操作。
4.你需要使用注解来解释代码如何使用:
代码应该自己能够解释它如何使用,易于可读,如果你发现你自己都需要注解专门解释如何使用,那么就要重构你的代码。这里注解不是指javadoc等必要文档。
5.一个exception系列错误没有返回最原始的错误:
你不应该吃掉exception错误,在catch一个exception时,要打印出其出错tack trace. 如果不知道错误来源,如何纠正错误呢?
6.你的代码是一堆泥球:
代码粘在一起,机会没有分离分层,代码应该是模块化,这样易于维护和重用。 MVC是关注用户View视图界面发生的事情,控制器是关注程序流程和数据的校验,而处理业务逻辑是领域模型的事情,只有模型可以和数据库访问直接进行交互。
7.难于单元测试
如果你发现Bug,那么些一段新的代码片段,它会花去你一些时间,但是这样代码就能处理更加复杂的事情了。
相关推荐
欧姆龙多PLC串行链接模式的应用
欧姆龙多PLC串行链接模式的应用 一、如何将两台CP1H进行串行PLC连接(PLC串行链接) 主机侧设定 从机侧设定 二、 如何实现编程通信 主机侧的【PC连接模式】为【全部】的时候 ① 主机会把自己的地址从3100开始,按照【链接字】设定的字数个数发送到每个从机的3100开始进行存储。 ② 从机会把自己的地址从31n0开始,按照主机侧参数【链接字】设定的字数个数发送到主机的31n0开始进行存储。 注:(n为从机的地址号,若从机号不连续,则该编号的地址将不被定义..
恶臭数字论证器 -- 简化版
现在我们要做的就是手写一个跟这个差不多的恶臭数字论证器。
PINN内嵌物理知识神经网络入门及文献总结
内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文
推荐开源项目:恶臭数字论证器
恶臭数字论证器,这个有趣的名字背后隐藏着一项独特而富有创意的技术应用。它是一个JavaScript库,致力于将任意给定的数字转化为由神秘数字"114514"组成的公式。想象一下,将数字"1919810"巧妙地拆解为一系列"114514"的组合,这不再是数学难题,而是恶臭数字论证器帮你轻松实现的小魔法。 ## 2、项目技术分析 该项目的核心在于算法设计。通过高效的计算策略,它能够找到每个数字的最佳...
从Peer到脉冲地震波:免费Python工具全流程配置教程(PyCharm+Anaconda)
本文详细介绍了如何使用Python工具链(PyCharm+Anaconda)实现从Peer数据库获取地震波数据到生成脉冲地震波的全流程配置。通过开源工具EQTOOL和PySeismicGen,结合Python环境搭建、数据格式转换和脉冲地震动生成技术,为结构抗震分析提供高效、灵活的解决方案。
以太网物理层协议整理(2)-万兆以太网
在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE 802.3an标准(10GBase-T)就推出了基于双绞铜线的万兆以太网规范,同样的IEEE 802.3aq标准推出了基于光纤的10GBase-LRM;2007年的
代码的坏味道
1. Duplicated Code(重复的代码) 臭味行列中首当其冲的就是Duplicated Code。如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。 最单纯的Duplicated Code就是[同一个class内的两个函数含有相同表达式(expression)]。这时候你需要做的就是采用Extract Method提炼出...
E2B Agent Runtime Sandbox 沙箱技术架构研究
本实现指南基于E2B的技术架构,提供了完整的基于Firecracker和Docker的Agent Runtime Sandbox后端服务实现方案。架构设计:参考E2B的分层架构,实现API层、管理层和虚拟化层Firecracker集成:深度集成Firecracker提供硬件级安全隔离完整功能:支持文件读写、shell执行、浏览器访问等核心功能生产就绪:提供Docker部署、监控、测试和安全配置可扩展性:设计支持水平扩展和高并发场景。
【亲测免费】 探秘恶臭数字论证器:解锁数字的114514种非凡表达
在数字的世界里,藏着不为人知的乐趣。今天,我们来谈谈一款独特的开源项目——**恶臭数字论证器**,这是一款旨在将任何数字巧妙地拆解为由114514这一神奇数字构成的数学公式的小工具。对于热爱数学游戏、编程探索或是对数字有着独特情怀的人来说,这无疑是一份惊喜。 ## 项目简介 恶臭数字论证器,如同其名般富有个性,它简化了复杂的数学运算过程,让用户能够轻松将任意数字转化为基于114514这个有趣数...
[DDR5]DDR5 SDRAM 状态图 和 基本功能
DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。
【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新)
ShaderGraph是Unity中的一个可视化工具,用于创建和编辑图形着色器。其意义在于简化编写复杂着色器的过程,减少对具体编程语言的依赖,使艺术家和设计师可以更方便地创建各种美术效果。使用ShaderGraph可以通过图形界面设置着色器属性,包括颜色、纹理、光照等,并在视窗预览中即时显示结果,从而快速迭代和调整着色器。使用ShaderGraph需要先安装Unity 2018.1或以上版本,并添加ShaderGraph插件。打开ShaderGraph面板后,可以通过拖放节点并连接它们来创建着色器。
8种代码臭味
细微之处发现软件的质量问题。 1.方法内代码超过一个电脑屏幕: 一个方法只应该执行特定的任务,一个方法不应该包含一些这样的逻辑,例如判断用户名字段包哈巴的数据是否有效,是否存在等。如果一个方法代码大得超过一个屏幕,那么这是表明它做了太多的事情,需要切分。 2.你在重用变量: 除非你工作于嵌入式领域,否则内存是便宜的,不要做内存的守财奴,要注重可维护性。 3.你直接访问request/session : 这和具体应用服务器环境绑定,难于测试,所有应用数据应该直接解耦Session/re
JumpServer未授权访问漏洞 CVE-2023-42442
JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统。 JumpServer 使用Python / Django 进行开发。2021年1月15日,阿里云应急响应中心监控到开源堡垒机JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器。
使用sonarLint插件优化代码臭味
这里写自定义目录标题插件安装几种代码臭味优化示例 插件安装 下载离线插件 org.sonarlint.eclipse.site-3.6.0.201806071228-RELEASE.zip 安装步骤如下: 1)在Eclipse菜单条中找到Help栏,选择Help->InstallNew Software 2)弹出Install界面,点击“Add”,弹出“AddRepository”界面,自己...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
代码的二十二道臭味
这是一篇关于阅读《重构,改善既有代码的设计》后的笔记,记住了代码发臭的二十二种形式,并形成这样的意识,自己每次写代码的时候都能时刻提醒自己代码是否在发臭,那么我们的生活会更轻松。重构不可避免,但是尽量减少重构的概率还是很不错的。 1.重复代码。重复代码是我们这些初学者最容易犯的错了,复制粘贴固然省力,但是省的只是当时的力。一般来讲,可以复制粘贴的代码都是实现相似甚至相同功能的代码
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
0562-基于单片机的臭味监测-系统设计
1、采用51单片机作为主控;2、采用MQ系列传感器检测硫化氢、氨气、甲烷、一氧化碳;3、采用AD0832模数转换;4、采用1602显示:四项检测值、每项报警值;5、当任意一项超标时,蜂鸣器报警,对应该项LED亮红;6、按键可设置每项的报警值;采用Altium Designer作为电路设计工具。
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
Refactoring 笔记
Refactoring 笔记2008-11-21 version 1.1 1 定义不改变代码外在行为的前提下,对代码进行修改,用以改善程序的内部结构。2 Refactoring的原则1) 小步前进,每次更改一点点,在发生错误时能进行回归;大量的更改叫做重写;2) 重构后测试失败一定
《敏捷软件开发》读书比较(二)
1、拙劣设计的症状: 僵化性:设计难以改变脆弱性:设计易于遭到破坏牢固性:设计难以重用粘滞性:难以做正确的事情不必要的复杂性:过分设计不必要的重复:滥用鼠标晦涩性:混乱的表达 这些症状在本质上和代码的臭味相似,但是它们所处的层位稍高一些。 2、面向对象设计的SOLID原则。 3、臭味和原则。 设计中的臭味是一种症状,是可以主观(很难客观进行度量)进行度量的。这些臭味常
敏捷软件开发——第七章 什么是敏捷设计
第7章 什么是敏捷设计 可以使用许多不同的媒介描述设计,但是设计最终体现为源代码。从根本上讲,源代码就是设计。 7.1 设计臭味 如果幸运,你会在项目开始时就想到了系统的清晰图像。系统设计是存在你脑中的一幅至关重要的图像。如果幸运一点,在首次发布时,设计依然保持清楚。 接着,事情开始变糟。软件像一片坏面包一样开始腐化。随着时间流逝,腐化蔓延、增长。丑陋腐烂的痛处和疖子...
常见的代码坏味道
0. 目录1. Duplicated Code(重复的代码)2. Long Method(过长函数)3. Large Class(过大类)4. Long Parameter List(过长参数列)5. Divergent Change(发散式变化)6. Shotgun Surgery(霰弹式修改)7. Feature Envy(依恋情结)8. Data Clumps(数据泥团)9. Primitive Obsession(基本型别偏执)10. Switch Statements(switch惊悚现身)11.
敏捷软件开发
1 设计臭味 如果幸运,你会在项目开始时就想到了系统的清晰图像。系统设计是存在你脑中的一幅至关重要的图像。如果幸运一点,在首次发布时,设计依然保持清楚。 接着,事情开始变糟。软件像一片坏面包一样开始腐化。随着时间流逝,腐化蔓延、增长。丑陋腐烂的痛处和疖子在代码中积累,使...
[查异常网]-20160401-清除代码异味
想下班早的码农都关注我~~~ 为什么我们需要有质量的代码? a)敏捷开发方法是用来应付那些要求代码做大量改动的反馈信息的方法。 b)如果程序没有用一种好的表达方式来表现,那程序会很难读,难维护,难修改。 查异常网 关注了该问题什么是代码异味? 1k 代码异味是一种由写的很差的代码引起的一种有臭味的感觉,一种程序什么地方会有问题的感觉 20 异味更多的是来自一种直觉,而不是一
⌈ 传知代码 ⌋ 基于BERT的语义分析实现
在之前的文章中,我们介绍了BERT模型。BERT作为一种预训练语言模型,它具有很好的兼容性,能够运用在各种下游任务中,本文的主要目的是利用数据集来对BERT进行训练,从而实现一个语义分类的模型。综上,我们基本了解了“一项全新的技术啦”🍭~~恭喜你的内功又双叒叕得到了提高!!!后续还会继续更新💓,欢迎持续关注📌哟~💫如果有错误❌,欢迎指正呀💫【传知科技 – 了解更多新知识】
敏捷软件开发——第8章 SRP:单一职责原则
第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因。 8.1 定义职责 在SRP中我们把职责定义为变化的原因。如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。同时,我们很难注意到这一点。我们习惯于以组的形式去考虑职责。违反SRP的示例代码: public interface Modem { public void Di...
代码重构意义和方法
摘要:很多人认为重构浪费时间,影响项目进度,其实重构不仅可以让我们的代码更加强壮而且还可以加快我们的项目进度。就和我们盖一个高楼大厦一样,我们的架构和地基越好,我们的楼房会越坚固和牢靠。 一、什么是重构 重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性。 二、为什么要代
3087



被折叠的 条评论
为什么被折叠?



