Top 5 Code Smells Newbies Developers Could Easily Identify & Avoid
Posted by Ajitesh Kumar / In Freshers, Software Quality / February 1, 2014
Following is one very popular image which has been used to represent time and again for representing code smells. I am doing it again. Apologies if this one is repeat for some of you. But the image nicely represents how to find if your code really smells. The code smells listed in this article would certainly lead to increase in WTF count ![]()
Representing Code Smells in form of WTF count :-)
For newbie developers, it has always remained a challenge to write code of great quality from day one. One of the primary concerns they have been found to have is following:
What kind of code could be termed as high quality code?
There are several characteristics of good quality code. However, a good starting point would be to write code which could be easily maintainable and usable (readable and understandable). Maintainability and Usability are two very important characteristic of software quality as per ISO 25000 as well. Two important features of a highly maintainable code are testability and reusability. Thus, the three key code quality that newbies could keep in mind are testability, reusability and usability.
Top 5 Code Smells Which are Easier to Identify & Avoid
If only newbies could watch following 5 areas (code smells) and avoid them, they would mostly end up with the code conforming to the requirements of testability, reusability and usability:
- Long Classes: It would be good to keep a watch on number of lines of code (LOC) in the class. If it crosses more than 300 or so, you may want to check on the fact if the methods of the class are related and serving just one functionality our doing just one thing. This is in line with the famous SOLID principle namely Single Responsibility Principle. Another area to look at is if individual methods are getting longer enough whose detail is describe in next point related with long method. Having classes serving just one functionality is easier to change as there could be only one set of related reasons for which the class would be needed to change. Thus, these classes becomes greatly maintainable meaning testable and reusable. These classes can also be termed as cohesive classes.
- Long Methods: If the LOC in a method increases more than 50-60, it is time to watch out and make sure that method is just doing one thing. Most of the times, methods get longer because of following two reasons:
- Methods consist of block of codes performing multiple functionality which can also be classified as violation of “single responsibility principle”. In this case, one could consider extracting block of codes performing different functionality into different methods.
- Methods consist of long conditional statements consisting of if-else statements which can again be extracted into different methods.
- Long Conditionals Expressions: At times, methods get longer due to large number of conditional statements in the same method. This can also be explained in terms of McCabe Cyclomatic Complexity which can be calculated as number of conditional statement + 1. These conditional statements looks like if-else, while, for, switch etc. If the cyclomatic complexity of a method becomes larger than 10 or so, it is time to watch out and see if these conditional expressions could be extracted into separate method. Long conditional expressions greatly reduces code usability that is code readability and understand-ability. More importantly, if you a unit testing freak, more the conditional statements in your method, more it becomes difficult to achieve a higher code coverage.
- Long Parameter List: Newbies developers tend to create method with long parameter list that creates issue at later stage when many other methods have called these methods and there arises a need to add another parameter to the existing list. Once you see that parameter list of a method increases further than 4-5 parameters, it is time to examine whether these parameters are related and could be created as a parameter object and passed to methods as objects. This makes it easy to add further parameters to parameter object without the need to change the method signature and the code becomes greatly maintainable.
- Vague Classes & Method Names: This one is very simple to identify. If you can not get a good name to name your classes and methods, be sure that you may be missing on business requirements which is supposed to be served by the method or class. Alternatively, for other developers, if the method and class names becomes difficult to understand, it is time to think through and come up with the name that could help developers to understand the functionality that is supposed to be served the method or the class.
You may want to check the refactoring patterns that could help you with tips to avoid these smells and write neat code.
Ajitesh Kumar
Follow him on Twitter and Google+.
Top 5 Code Smells Newbies Developers Could Easily Identify & Avoid的更多相关文章
- How to code like a pro in 2022 and avoid If-Else
在浏览文章的时候发现了一篇叙述有关if-else语句的文章,这篇文章作者是Thai Tran,他原文是用英语写的,然后看着文章浅显易懂,便尝试翻译成汉语.如有不妥还望指出. 原文链接:https:// ...
- Code Review Checklist and Guidelines for C# Developers
Checklist1. Make sure that there shouldn't be any project warnings.2. It will be much better if Code ...
- Top 40 Static Code Analysis Tools
https://www.softwaretestinghelp.com/tools/top-40-static-code-analysis-tools/ In this article, I have ...
- Top 10 Mistakes Java Developers Make--reference
This list summarizes the top 10 mistakes that Java developers frequently make. #1. Convert Array to ...
- Learn golang: Top 30 Go Tutorials for Programmers Of All Levels
https://stackify.com/learn-go-tutorials/ What is Go Programming Language? Go, developed by Google in ...
- Java – Top 5 Exception Handling Coding Practices to Avoid
This article represents top 5 coding practices related with Java exception handling that you may wan ...
- Career Planning:Developers Best Practices Tutorial
This small tutorial is based on my past 16+ years of experience in software development industry. I ...
- 读《Top benefits of continuous integration》有感
看到一片文章<Top benefits of continuous integration>,这张图画的很棒.将整个CI流程各阶段,列举出来了. 作者在文章里面介绍了CI和TDD,以及采用 ...
- Top 10 Uses For A Message Queue
We’ve been working with, building, and evangelising message queues for the last year, and it’s no se ...
- TOP 10 ONLINE COMPILER
Top 10 Online Compilers +1338 Tweet Share106 Share Pin 444 Shares Online compilers are one type of t ...
随机推荐
- 【TVM教程】 自定义relay算子
本文地址:https://www.cnblogs.com/wanger-sjtu/p/15046641.html 本文为tvm 教程的翻译版.这部分介绍了如何在tvm中添加新的relay算子,具体的是 ...
- 数据库中的可视化和探索性:MongoDB的数据可视化和探索性工具
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...
- Python web 框架对比:Flask vs Django
哈喽大家好,我是咸鱼 今天我们从几个方面来比较一些现在流行的两个 python web 框架--Flask 和 Django,突出它们的主要特性.优缺点和简单案例 到最后,大家将更好地了解哪个框架更适 ...
- 浅析synchronized锁升级的原理与实现
背景 在多线程编程中,线程同步是一个关键的概念,它确保了多个线程对共享资源的安全访问.Java中的synchronized关键字是一种常用的线程同步机制,它不仅提供了互斥访问的功能,还具备锁升级的特性 ...
- Centos 7安装dotnet 3.1
# 注册 Microsoft 密钥和源 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft- ...
- 基于GPT搭建私有知识库聊天机器人(三)向量数据训练
在前面的文章中,我们介绍了实现原理和基本环境安装.本文将重点介绍数据训练的流程,以及如何加载.切割.训练数据,并使用向量数据库Milvus进行数据存储. 1. 数据训练依赖于向量数据库 在本文中,我们 ...
- Linux 如何删除乱码的文件
事情是这样,服务器很多人在使用,以前的离职同事留了一大堆不知道是什么东西. 那些文件看不了,又删不掉,非常碍眼. 我搜索了挺多资料,没有一篇文章能真的解决问题(感觉都是抄来抄去的). 用 SFTP 工 ...
- 行行AI人才直播第12期:风平智能创始人林洪祥《AI数字人的技术实践和商业探讨》
行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台. 歌手孙燕姿凭借AI翻唱席卷各大视频平台.有视频博主用AI技术复活已故的奶奶,并且与之对话缅怀亲人填补遗憾.更有国外网红通过GP ...
- Hive安装与启动
一.mysql安装 在配置Hive之前一般都需要安装和配置MySQL,因为Hive为了能操作HDFS上的数据集,那么他需要知道数据的切分格式,如行列分隔符,存储类型,是否压缩,数据的存储地址等信息. ...
- python3 猜数字小游戏
Guess_the_Number.py import random # Generate a random number between 1 and 100 number = random.randi ...