`
futurep_p
  • 浏览: 66103 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从感叹号开始优化你的代码

阅读更多

  eclipse里常常会看到一片的感叹号,既然出现了感叹号就说明代码有不严谨的地方。本人是非常讨厌出现这样的提示的,或许有人会说,那你设置下eclipse,把警告全部去掉了。但这只是掩耳盗铃的做法,没有根本上解决问题。下面看看有哪些问题是经常出现的:

1、多余的import;

2、未引用的定义;

3、没有对可选对象的泛化;

4、实例对象引用静态变量(方法)。

 

好像列举出来最常出现的就这么4种,那为什么我们不能在写代码的时候规范下呢,让自己的代码更漂亮呢。其实代码风格也是可以看出一个人做事的风格,只有存在想着让自己做的事情尽量的完美,你才会有动力去改变你的代码风格,去完善每段代码,从而不断的提高自己。

下面再列举下我经常看到的一些不好习惯(纯属个人意见)

 

一、大片的无用代码注释。有人或许会说,我现在注释掉,或许后面还要用,其实这都是在给自己找借口。扪心问自己一下,你真的还会去用这些代码吗?特别是这些代码本身就是你自己开发的,只有你才是最清楚它的逻辑,你才最有权力去删除这些代码。而别人来看了,只能叹息几下,鬼知道你还要不要用呢。

 

二、大量的if{} else{}。关于这个问题,其实模式的介绍里已经说的很清楚了,如果说是用来最为大业务的方向判断,就需要考虑用设计模式来优化你的代码了;如果这样的逻辑判断随着时间的推延,会出现比较大的变化的,也需要用设计模式来重构了。

 

三、不合理的代码空行。代码空行是很好的提高代码可读性的手段,也是最容易做的。比如逻辑块之间加个空行,return之前加个空行等等。

 

四、注释缺失。这个我想其实每个人都明白,只不过你愿不愿意多花点时间去写。可能有人会说我就写了这么点逻辑,写啥注释啊。确实如果逻辑少的,注释的价值体现的不那么明显,但并不表示它没有。比如你做了一个判断,这个时候你试着站在别人的角度上想想,如果他来看这个代码是否就能马上明白具体的意思呢。或者这么来说吧,如果别人写了这么一段代码,你是不是还要去问下开发的人为什么加这个判断呢。

 

五、重复代码。我一直有这样的观点,要做个“懒人”,“智慧的懒人”,因为“智慧的懒人”才会想着让自己或者别人以后做更少的事。看到了重复的代码出现,或者预见到了这里将是以后共用的逻辑,就自然会想着抽取共用代码,紧接着就会想到用什么模式会更合理的达到这种共用效果。如果说你对模式的理解还不过,也不要紧,抽取共用并不一定要用模式,关键是要有这种思维驱动去做这个事情。

 

六、代码格式化缺失。在一个团队中,每个人都有之际写代码的风格,能力也有好有坏,但代码格式化我觉得是可以统一的。一方面为了大家代码风格更接近;另一方面为了合并的代码冲突几率降到最低。

 

七、硬编码泛滥。存在硬编码的地方,大部分就是可以共用的地方。举个例子:数据库中一个判断enable的字段,存了Y,N来作为是否可用的标志。可以预见到这样的规则不会只有一处,搞个常量或者枚举来替代硬编码是再合适不过了。既提高了共用性,又增加了代码的美观,何乐而不为呢。

 

八、异常处理不合理。异常发生了,大部分情况是需要我们去处理的。checked异常已经在编译期就告诉我们要处理,可以捕获可以继续往外抛,但有一点是要确定的,那就是这个东西你不能扔给你的用户。因为用户是不需要关心这些的,所以返回给用户是相对模糊的提示,如执行异常。而不是把Exception里的信息直接丢给用户,除非是你已知的异常信息。

 

九、日志打印不规范。1、特定业务打在特定日志文件中;2、根据日志作用判断日志级别;3、对debug,info级别加上enabled判断,避免多余的字符串实例消耗。4、message部分需要提现业务的特有信息,尽量不要出现“操作异常”,可以改为“×××业务操作异常”。5、throwable对象不要作为message输出,如logger.error("×××业务异常"+e)。

 

十、缺少对结果(异常)信息的定型。为什么要定型,定型会增加工作量,但同时会提高结果的可控制性,你可以对特定类型做特殊处理。怎么来定型,给结果(异常)对象增加resultCode(exceptionCode)属性,而这个code可以用自定义enum来完成。其中resultCode和exceptionCode可以是用同一个enum,这样就很好的达到exception到result的衔接。

分享到:
评论

相关推荐

    WinCC画面对象上为何显示黄色叹号?.docx

    根据具体的代码,针对性地解决如重置通信、修复硬件故障或优化通信参数等问题。 解决上述问题的步骤包括: 1. **验证变量存在性**:打开WinCC项目,进入变量管理器,确认目标变量是否已经创建并正确配置。如果变量...

    前端html的感叹号卡商城.zip

    在"感叹号卡商城"中,可能会使用这些元素来创建不同区域,如头部导航、商品展示区、购物车和页脚信息。 3. **列表和表格**: 商品分类和展示可能会使用`<ul>`、`<ol>`列表或`<table>`元素,以便用户能够方便地浏览和...

    完美解决Eclipse 项目有红感叹号的问题

    有时候,项目图标上出现的是黄色盾牌感叹号,这代表着项目虽然引用了某些JAR包,但这些包中的类并没有在代码中实际使用。这种情况下,你可以考虑是否真的需要这些引用,或者是否可以优化项目依赖。 总结一下,解决...

    request.setAttribute 语句前总显示红色感叹号解决办法 HTTP Status 500 -

    ### 解决request.setAttribute 语句前总显示红色感叹号及HTTP Status 500问题 ...此外,还提出了进一步的建议,帮助开发者更好地审查和优化代码,避免未来出现类似的问题。希望这些解决方案能够帮助您顺利解决问题。

    python情感分析代码

    3. VADER:专门针对社交媒体文本设计的情感分析工具,其特点是考虑了英文中的否定词、缩写、感叹号等对情感强度的影响。VADER利用词汇表和规则,对文本进行情感打分。 4. Spacy:这是一个高效的NLP库,虽然其核心...

    SCSI设备信息检测源代码.

    SCSI设备信息检测是理解系统硬件配置、进行故障排查或优化性能的关键步骤。这份"SCSI设备信息检测源代码"应该包含了用于读取和解析SCSI设备信息的程序。 源代码是程序员用编程语言编写的原始指令集合,通常包括...

    情绪分析 python源代码

    4. VADER:VADER是一个预训练的模型,特别适合处理社交媒体和网络语言中的情绪分析,因为它对缩写、大写字母和感叹号等网络语言特征有很好的理解。 5. Hugging Face's Transformers:这个库包含了许多预训练的NLP...

    c#反编译工具 ILSpy

    ILSpy是一款广受欢迎的开源C#反编译工具,它允许开发者查看并理解.NET Framework、.NET Core以及Unity等应用程序的内部工作...无论你是想要学习新的API,还是需要修复一个没有源代码的库,ILSpy都能成为你得力的助手。

    GRBL固件之laser激光

    描述中提到的"GRBL_coreXY_Laser_激光的固件库"是一个特定的GRBL版本,它针对CoreXY机构进行了优化,并且集成了激光控制功能。CoreXY是一种先进的机械设计,使用两对互相垂直的同步步进电机来驱动X和Y轴,提供更高的...

    SQL Server 知识大全

    - **存储过程**:封装复杂操作,提高代码复用,提升系统性能。 - **事务和并发控制**:掌握ACID属性,理解行版本控制(ROWVERSION)和锁机制。 3. **性能调优**: - **查询优化器**:了解其工作原理,学习如何...

    secoclient win-64-7.0.5.1

    4. "无SVN感叹号问题":在SVN中,文件前的感叹号表示文件有未解决的冲突或者未提交的更改。该描述指出,这个版本的secoclient可能已经解决了导致这类提示的问题,用户可以更顺畅地进行版本控制操作,无需担心因未...

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...

    源代码:新春献礼--便宜中国城市点评网pianyicn.com门户ASP版本

    【描述】中的感叹号强调了这是一个特别的礼物,可能意味着开发者或者社区在春节期间分享了这个宝贵的资源。源代码的公开分享通常是为了促进学习、交流和改进,允许其他开发者研究、修改和扩展已有的代码库。 【标签...

    swift代码文件03

    `)和感叹号(`!`)进行解包。 8. **错误处理**:Swift使用do-catch语句处理可能抛出的错误,增强了程序的健壮性。 9. **GCD(Grand Central Dispatch)**:Swift内置了对Apple的GCD的支持,用于多线程和并发处理...

    源代码:网人2008ACC高级企业版(源代码)

    【描述】中连用多个感叹号强调了这份源代码的重要性,暗示着它可能包含了一些高级或复杂的实现,对于学习者和开发者来说,这是一份极具价值的学习资料。 在【标签】"源代码"中,我们可以推断出这个软件的所有内部...

    SourceTree_2.4.1 MAC免登陆(拖到应用程序后启动程序支持检查并更新到最新3.0版本)

    标题"SourceTree_2.4.1 MAC免登陆(拖到应用程序后启动程序支持检查并更新到最新3.0版本)"表明,这是一个适用于Mac操作系统的SourceTree版本,版本号为2.4.1。"免登陆"意味着用户在使用这个特定的构建时,可能无需...

    源代码:网络游戏虚拟物品担保交易网 完整版

    感叹号的使用可能意味着此源代码具有较高的价值,因为开发者可以深入理解系统的内部运作,进行二次开发或定制化修改。 【标签】:“源代码” 指出这是一个关于软件开发的资源,特别是与编程相关的。源代码是程序员...

    用C语言写的手机短信收发程序代码

    【描述】中虽然只有一个感叹号的重复,没有提供额外的信息,但我们可以理解为这是一个强调,可能意味着这个程序在某些方面有特别之处,比如高效、轻量或者实现了某种创新功能。 【标签】中提到的“C#”可能是一个...

    BCM43142官方驱动文件

    5. **源代码**:如果提供的驱动是开源的,那么可能包含BCM43142的源代码,以便用户查看或自定义。 安装过程通常如下: 1. 解压下载的压缩包。 2. 使用`sudo`权限进入解压后的目录。 3. 运行`./install.sh`或类似...

    前端开源库-tpack-uglify-js

    /" // 保留以感叹号开头的注释 } } } } ``` 3. **运行**:执行 `tpack build` 命令,`tpack` 将自动调用 `uglify-js` 插件处理 JavaScript 文件。 在前端开源社区中,类似 `tpack` 和 `uglify-js` 的工具还有...

Global site tag (gtag.js) - Google Analytics