首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序设计方法

程序设计方法
EN

Stack Overflow用户
提问于 2013-11-04 15:34:37
回答 3查看 81关注 0票数 0

我希望对以下程序设计方法有任何帮助/指导。

我正在开发一个类,其中我有类,属性被计算出来,如下;

代码语言:javascript
复制
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个布尔好吗?在我的应用程序代码中,我只需要将/String与特定的TCHAR/String进行比较,比如如果位置在顶部、任务A还是有布尔值有我所缺少的优点? 此外,我有大约8个属性的,我需要布尔人来识别它是在顶部、中间还是底部的上。

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

EN

回答 3

Stack Overflow用户

发布于 2013-11-04 15:46:18

bool是一个字节类型,而TCHAR (取决于它的使用)最多可以是两个字节。从内存大小和优化的角度来看,bool是更优化和更快的,因为它们要么是0,要么是1。您应该提到发生这种更改的目标。涉及到很多方面。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 15:53:08

“更好”是主观的,正确的方法取决于你的意思。

在编写新代码时,我总是按照以下顺序定义“更好”:

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

由于这适用于您的代码,我可能会将其设计为对每个不同属性使用单个bool,而不是试图创建一个带有ORed标志的单一整数类型,等等。如果布尔值是相互排斥的,那么我将使用单个enum来表示它们。

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

由于代码是根据实际的生产环境编写和测试的,我将分析我的代码并识别热点。如果我找到了其中任何一种,并将它们确定为需要修复的东西,那么我的优先事项就会改变:

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 16:08:23

虽然这并不是设计中唯一要考虑的要点,但它通常是一条很好的格言。

代码语言:javascript
复制
When doing something, do it once.

你有三个布尔人,控制着你物品的位置。这意味着,要确定项目的位置,您需要检查三个项目。此外,要设置项目的位置,需要设置一个布尔true和两个布尔false。似乎你每次做某件事都会做三件事。

考虑一下这个

代码语言:javascript
复制
public enum VerticalPanelPosition {
   TOP,
   MIDDLE,
   BOTTOM;
}

现在你只能有一个位置

代码语言:javascript
复制
private VerticalPanelPosition vPosition;

只需要做“一件事,一次”

代码语言:javascript
复制
public void setPosition(VerticalPanelPosition position) {
  vposition = position;
}

对于Java语法,我很抱歉,但考虑到上下文,我敢打赌,您可以不用花费太多精力就可以将它转换成C#。

祝你设计得更好,一步一步,有很多事情要考虑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19771216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档