关于代码设计的一些收获。
Part1:
最近关于代码设计的一些收获,将一些功能提炼成接口,这样代码清晰,使用也会更方便。
使用前register,使用过程中就能调用接口相关的函数。
public class Test : ITestInterface
{
public string GetInfo1()
{
return "info1 of Test";
}
public string GetInfo2()
{
return "info2 of Test";
}
}
public interface ITestInterface
{
string GetInfo1();
string GetInfo2();
}
public class ATest : MonoBehaviour
{
private ITestInterface mInterface;
public void Register(ITestInterface @interface)
{
mInterface = @interface;
}
public void Start()
{
Register(new Test());
}
public void Update()
{
Debug.Log(mInterface.GetInfo1());
}
}
part2
代码设计中的关于传值的一些收获。对于常用到的信息,可以提炼一个结构出来,将这个结构在程序中进行传递,这样参数的增删会比较方便,改动地方少也能减少bug.
public class Player
{
public int Gold;
public int Exp;
}
public string GetAttr(int Gold, int Exp)
{
return $"{Gold} {Exp}";
}
public string GetAttr(Player playerData)
{
return $"{playerData.Gold} {playerData.Exp}";
}
使用结构传递的话如果后期增加一个参数,只需要在GetAttr中调用,前面那种方法还需要在每一个调用的地方都进行修改,比较容易出问题
Part3:
对于属性我们可以提前计算,当相关的参数有修改时我们就将属性进行修改。
public class Player1
{
public int Gold
{
get => Gold;
set { Attr = $"{value} {Exp}"; }
}
public int Exp
{
get => Exp;
set { Attr = $"{Gold} {value}"; }
}
private string Attr;
public string GetAttr(Player playerData)
{
return playerData.Attr;
}
}
//存在一些情况,我们的参数频繁修改,但是并不会经常去获取属性,这个时候可以设置标识符,在必要的时候再对属性进行计算。
public class Player2
{
public int Gold
{
get => Gold;
set { bAttrDirty = true; }
}
public int Exp
{
get => Exp;
set { bAttrDirty = true; }
}
private bool bAttrDirty;
public string Attr;
public string GetAttr()
{
if (bAttrDirty)
{
Attr = $"{Gold} {Exp}";
bAttrDirty = false;
}
return Attr;
}
}
发现自己在代码设计的时候有点混乱,还是需要及时总结。