- 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.
- FuelPHP Application Development Blueprints
- 精通JavaScript+jQuery:100%動態網頁設計密碼
- 軟件架構設計:大型網站技術架構與業務架構融合之道
- PHP基礎案例教程
- Microsoft System Center Orchestrator 2012 R2 Essentials
- Getting Started with Gulp
- 深入理解Android:Wi-Fi、NFC和GPS卷
- Hands-On Full Stack Development with Spring Boot 2.0 and React
- Android移動應用項目化教程
- Mastering SciPy
- C# 7 and .NET Core 2.0 Blueprints
- C語言程序設計實驗指導
- C/C++程序設計教程
- Visual C++網絡編程教程(Visual Studio 2010平臺)
- Prezi Cookbook