- C# and .NET Core Test Driven Development
- Ayobami Adewole
- 258字
- 2021-06-25 22:00:27
Preventing and detecting code smell
Programming styles and coding formats that result in code smell should be avoided. By adequately paying attention to the details, bad code pointers discussed in the Code smell section should be avoided. The replicated lines of code in the two methods of the source code mentioned in the Code smell section can be refactored to a third method. This avoids replication of code and allows for easy modifications:
[HttpGet]
public ActionResult GetAllTransactions()
{
var yearsAndMonths=GetYearsAndMonths();
ViewBag.Transactions= GetTransactions(yearsAndMonths.Item1,yearsAndMonths.Item2);
return View();
}
[HttpGet]
public ActionResult SearchTransactions()
{
var yearsAndMonths=GetYearsAndMonths();
ViewBag.Years = yearsAndMonths.Item1;
ViewBag.Months = yearsAndMonths.Item2;
return View();
}
private (List<string>, List<string>) GetYearsAndMonths(){
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());
return (years,months);
}
Also, the method with a long list of parameters in the Code smell section can be refactored to use C# Plain Old CLR Object (POCO) for clarity and reusability:
public void ProcessTransaction(Transaction transaction)
{
//Do something
}
public class Transaction
{
public string Username{get;set;}
public string Password{get;set;}
public float TransactionAmount{get;set;}
public string TransactionType{get;set;}
public DateTime Time{get;set;}
public bool CanProcess{get;set;}
public bool RetryOnfailure{get;set;}
}
Development teams should have guidelines, principles, and coding conventions and standards developed jointly by the team members and should be constantly updated and refined. These, when used effectively, will prevent code smell in the software code base and allow for the easy identification of potential bad code by team members.
- FreeSWITCH 1.8
- Practical DevOps
- INSTANT Mercurial SCM Essentials How-to
- 從0到1:Python數據分析
- Hands-On Full Stack Development with Go
- Microsoft Azure Storage Essentials
- Statistical Application Development with R and Python(Second Edition)
- HoloLens與混合現實開發
- Django實戰:Python Web典型模塊與項目開發
- Windows Phone 8 Game Development
- AutoCAD基礎教程
- 征服C指針(第2版)
- Beginning C# 7 Hands-On:The Core Language
- Distributed Computing with Python
- Python實戰指南:手把手教你掌握300個精彩案例