代码怎么写才看起来是有经验的程序员
1、1.用代码阐述代替注释
反例:
/// <summary>
/// !@#$%^&^&*((!@#$%^&^&*((!@#$%^&^&*((!@#$%^&^&*((
/// </summary>
/// <returns></returns>
public decimal GetCash()
{
//!@#$%^&^&*((!@#$%^&^&*((
var a = new List<decimal>() { 2m, 3m, 10m };
var b = 2;
var c = 0m;
//!@#$%^&^&*((!@#$%^&^&*((!@#$%^&^&*((
foreach (var p in a)
{
c += p*b;
}
return c;
}
优化后:
public decimal CalculateTotalCash()
{
var prices=new List<decimal>(){2m,3m,10m};
var itemCount = 2;
return prices.Sum(p => p*itemCount);
}
注释,是在别的程序猿看不懂代码的情况下使用,尽量让你的代码命名能代替注释吧。
2、2. 为布尔变量赋值
反例:
public bool IsAdult(int age)
{
bool isAdult;
if (age > 18)
{
isAdult = true;
}
else
{
isAdult = false;
}
return isAdult;
}
优化后:
public bool IsAdult(int age)
{
var isAdult = age > 18;
return isAdult;
}
3、3.双重否定的条件判断
反例:
if (!isNotRemeberMe)
{
}
优化后:
if (isRemeberMe)
{
}
你不理解双重否定不要紧,你总知道负负得正吧
4、4.拒绝HardCode,拒绝挖坑
反例:
if (carName == "Nissan")
{
}
优化后:
if (car == Car.Nissan)
{
}
让错误发生的编译阶段,你能更好的发现问题
5、5.拒绝魔数
反例:
if (age > 18)
{
}
优化后:
const int adultAge = 18;
if (age > adultAge)
{
}
所谓魔数(Magic number)就是一个魔法数字,它没有单位,每当你看到这个数字时都不了解这是什么。这个现象很常见,最好的就是给它一个值,然后替代。
6、6.复杂的条件判断
反例:
if (job.JobState == JobState.New
|| job.JobState == JobState.Submitted
|| job.JobState == JobState.Expired
|| job.JobTitle.IsNullOrWhiteSpace())
{
//....
}
优化后:
if (CanBeDeleted(job))
{
//
}
private bool CanBeDeleted(Job job)
{
var invalidJobState = job.JobState == JobState.New
|| job.JobState == JobState.Submitted
|| job.JobState == JobState.Expired;
var invalidJob = string.IsNullOrEmpty(job.JobTitle);
return invalidJobState || invalidJob;
}
到受到牛气冲天了吗?