程序设计方法



我非常感谢您对以下项目的程序设计方法提供任何帮助/指导。

我正在开发一个类,在这个类中我有这个类,属性已经计算出来,如下所示;

class PanelBlock{
    public: 
        PanelBlock();
    private:
        TCHAR m_sSlope[PANEL_NAME_LENGTH];  // To store the Slope
        bool m_bTopPanel;     // This is to identify the
        bool m_bMidPanel;     // location of the PanelBlock.
        bool m_bBotPanel;
        // Similarly we have it for other attributes.
        // My Question here is, 
        // Is it better to have a TCHAR instead of 3/5 booleans here?
        TCHAR m_sPanelLocation[PANEL_LOCATION_LENGTH];
}

我的问题是,

这里使用TCHAR/String而不是3/5布尔值更好吗?在我的应用程序代码,我只需要将TCHAR/String与特定的TCHAR/String,比如如果位置为TOP,则执行任务A,或者执行布尔值有什么我缺少的优势吗?

此外,我有大约8个属性,为此我需要布尔值识别它是在顶部、中间还是底部

如有任何帮助/指导,我们将不胜感激。

"Better"是主观的,正确的方法取决于你的意思

在编写新代码时,我总是用以下术语定义"更好",顺序如下:

  1. 简洁清晰、易于理解的代码比复杂、模糊的代码更好,因为它更容易扩展和修复
  2. 共性通用代码比适用范围很窄的代码要好,因为它减少了您必须编写的代码量。希望这反过来能减少你必须修复的错误数量
  3. 速度效率快代码比慢代码好
  4. 空间效率少用内存总比多用内存好

由于这适用于您的代码,我可能会将其设计为对每个不同的属性使用单个bool,而不是尝试创建具有OR-ed标志等的单个积分类型。如果布尔值互斥,那么我将使用单个enum来表示它们。

重要的是要避免过早地对代码进行微优化,因为这样做必然会使事情变得更复杂、更不通用、更难维护。然而,这并不是一开始就不选择正确算法的借口。

当代码在真实的生产环境中编写和测试时,我将对代码进行评测并确定热点。如果我发现了任何问题,并将其确定为需要修复的问题,那么我的优先事项就会发生变化:

  1. 速度效率快代码比慢代码好
  2. 空间效率少用内存总比多用内存好
  3. 简洁清晰、易于理解的代码比复杂、模糊的代码更好,因为它更容易扩展和修复
  4. 共性通用代码比适用范围很窄的代码要好,因为它减少了您必须编写的代码量。希望这反过来能减少你必须修复的错误数量

简单性仍然相对重要,尤其是在开始进行微观优化时。优化代码片段很容易导致复杂性失控,使维护成为一场噩梦。不要在表演的祭坛上完全抛弃简单。

bool是一个单字节类型,而TCHAR根据其使用情况最多可以是两个字节。从内存大小和优化的角度来看,bool s更优化、更快,因为它们要么是0,要么是1。你应该提到你的目标,让这种改变发生。这涉及到很多方面。

虽然这不是设计中需要考虑的唯一要点,但它通常是一条很好的准则

When doing something, do it once.

您有三个布尔值,用于控制项目的位置。这意味着要想弄清楚项目的位置,你需要检查三个项目。此外,要设置项目的位置,需要设置一个布尔true和两个布尔false。似乎你几乎每次做某事都会做三件事。

考虑这个

public enum VerticalPanelPosition {
   TOP,
   MIDDLE,
   BOTTOM;
}

现在你只能有一个位置

private VerticalPanelPosition vPosition;

并且只需要做"一件事,一次">

public void setPosition(VerticalPanelPosition position) {
  vposition = position;
}

很抱歉使用Java语法,但考虑到上下文,我敢打赌你可以毫不费力地将其翻译成C#。

祝你在设计方面做得更好,这是一小步一小步,有很多事情需要考虑。

最新更新