我希望对以下程序设计方法有任何帮助/指导。
我正在开发一个类,其中我有类,属性被计算出来,如下;
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个属性的,我需要布尔人来识别它是在顶部、中间还是底部的上。
如有任何帮助/指导,将不胜感激。
发布于 2013-11-04 15:46:18
bool是一个字节类型,而TCHAR (取决于它的使用)最多可以是两个字节。从内存大小和优化的角度来看,bool是更优化和更快的,因为它们要么是0,要么是1。您应该提到发生这种更改的目标。涉及到很多方面。
发布于 2013-11-04 15:53:08
“更好”是主观的,正确的方法取决于你的意思。
在编写新代码时,我总是按照以下顺序定义“更好”:
由于这适用于您的代码,我可能会将其设计为对每个不同属性使用单个bool,而不是试图创建一个带有ORed标志的单一整数类型,等等。如果布尔值是相互排斥的,那么我将使用单个enum来表示它们。
避免过早地对代码进行微优化是很重要的,因为这样做必然会使事情变得更复杂、更不通用、更难维护。然而,这并不是不首先选择正确算法的借口。
由于代码是根据实际的生产环境编写和测试的,我将分析我的代码并识别热点。如果我找到了其中任何一种,并将它们确定为需要修复的东西,那么我的优先事项就会改变:
简单性仍然是相对重要的,特别是在微优化开始的时候。优化代码片段很容易导致复杂性失控,使维护成为一场噩梦。不要在表演的祭坛上完全放弃简单。
发布于 2013-11-04 16:08:23
虽然这并不是设计中唯一要考虑的要点,但它通常是一条很好的格言。
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#。
祝你设计得更好,一步一步,有很多事情要考虑。
https://stackoverflow.com/questions/19771216
复制相似问题