官术网_书友最值得收藏!

Code smell

Code smell is a term that was first used by Kent Beck, which indicates deeper issues in the source code. Code smell in a code base can come from having replications in the source code, use of inconsistent or vague naming conventions and coding styles, creating methods with a long list of parameters, and having monster methods and classes, that is methods or classes that know and do too much thereby violating the single responsibility principle. The list goes on and on.

A common code smell in the source code is when a developer creates two or more methods that perform the same action with little or no variation or with program details or facts that ought to be implemented in a single point replicated in several methods or classes, leading to a code base that is not easy to maintain.

The following two ASP.NET MVC action methods have lines of code that create a strongly-typed list of strings of years and months. These lines of code, that could easily have been refactored into a third method and called by both methods, have been replicated in these two methods:

[HttpGet]
public ActionResult GetAllTransactions()
{
List<string> years = new List<string>();
for (int i = DateTime.Now.Year; i >= 2015; i--)
years.Add(i.ToString());
List<string> months = new List<string>();
for (int j = 1; j <= 12; j++)
months.Add(j.ToString());
ViewBag.Transactions= GetTransactions(years,months);
return View();
}


[HttpGet]
public ActionResult SearchTransactions()
{
List<string> years = new List<string>();
for (int i = DateTime.Now.Year; i >= 2015; i--)
years.Add(i.ToString());
List<string> months = new List<string>();
for (int j = 1; j <= 12; j++)
months.Add(j.ToString());
ViewBag.Years = years;
ViewBag.Months = months;
return View();
}

Another common code smell occurs when developers create methods with a long list of parameters, as in the following method:

public void ProcessTransaction(string  username, string password, float transactionAmount, string transactionType, DateTime time, bool canProcess, bool retryOnfailure)
{
//Do something
}
主站蜘蛛池模板: 揭阳市| 拜泉县| 本溪市| 定结县| 邯郸县| 安丘市| 宜章县| 仁寿县| 安多县| 巨野县| 慈溪市| 虹口区| 瓦房店市| 阿拉善左旗| 远安县| 石台县| 杭锦旗| 崇文区| 东乡族自治县| 阿巴嘎旗| 襄垣县| 兴海县| 宕昌县| 潢川县| 乐山市| 陵水| 新泰市| 稻城县| 永和县| 灵宝市| 易门县| 朝阳县| 灵山县| 和硕县| 连云港市| 托里县| 乌拉特前旗| 德清县| 八宿县| 甘肃省| 福海县|