程序设计方法
Program Designing Approach
我非常感谢您对以下项目的程序设计方法提供任何帮助/指导。
我正在开发一个类,在这个类中我有这个类,属性已经计算出来,如下所示;
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"是主观的,正确的方法取决于你的意思
在编写新代码时,我总是用以下术语定义"更好",顺序如下:
- 简洁清晰、易于理解的代码比复杂、模糊的代码更好,因为它更容易扩展和修复
- 共性通用代码比适用范围很窄的代码要好,因为它减少了您必须编写的代码量。希望这反过来能减少你必须修复的错误数量
- 速度效率快代码比慢代码好
- 空间效率少用内存总比多用内存好
由于这适用于您的代码,我可能会将其设计为对每个不同的属性使用单个bool
,而不是尝试创建具有OR
-ed标志等的单个积分类型。如果布尔值互斥,那么我将使用单个enum
来表示它们。
重要的是要避免过早地对代码进行微优化,因为这样做必然会使事情变得更复杂、更不通用、更难维护。然而,这并不是一开始就不选择正确算法的借口。
当代码在真实的生产环境中编写和测试时,我将对代码进行评测并确定热点。如果我发现了任何问题,并将其确定为需要修复的问题,那么我的优先事项就会发生变化:
- 速度效率快代码比慢代码好
- 空间效率少用内存总比多用内存好
- 简洁清晰、易于理解的代码比复杂、模糊的代码更好,因为它更容易扩展和修复
- 共性通用代码比适用范围很窄的代码要好,因为它减少了您必须编写的代码量。希望这反过来能减少你必须修复的错误数量
简单性仍然相对重要,尤其是在开始进行微观优化时。优化代码片段很容易导致复杂性失控,使维护成为一场噩梦。不要在表演的祭坛上完全抛弃简单。
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#。
祝你在设计方面做得更好,这是一小步一小步,有很多事情需要考虑。
- 桌面计算器出现问题.C++程序设计语言
- C++Qt程序设计问题
- 正确的方法或设计模式,以简化类中的“operatorX”函数,以按给定顺序比较相同类型的属性
- 返回不同类型/类的方法的设计模式
- 嵌入式设备中传感器应用程序设计体系结构
- 关于多态性和资源管理的程序设计
- 生成python绑定,要使用的方法/程序
- 不同处理方法的设计模式,这些方法共享一些常见的处理链
- 视图状态和应用程序设计
- C++面向对象的客户端套接字应用程序设计
- 程序设计方法
- 关于异常规范和应用程序设计的问题
- 为什么我的程序设计为用完 RAM 和 CPU 不使用所有 RAM 和 CPU?
- 具有多态性和不同数据结构的程序设计
- ROS程序设计:向前推进
- C++网络程序设计:Boost Asio、Serialization和OStream
- 良好的程序设计/避免多重冗余检查的最佳实践(例如在C++中)
- 在不影响现有C或c++应用程序设计的情况下添加新的职责
- Windows Mobile c++ -应用程序设计类问题
- (程序设计语言C/C++)中的格式值类型float