我是一名C++程序员,最近加入了一家使用大量C的新公司.当他们审查我的代码时,他们认为我过度设计了一些我完全不同意的事情.该公司正在做嵌入式系统中的所有事情,因此我的代码需要内存效率,但我正在做的事情不是CPU密集型的.我想知道你们怎么想我的设计.这是清单.
我有一些需要传递的数组,最终需要传递给一些C代码.我可以在这个地方传递一个指针和一个大小.但是我选择创建一个表示它的类 - 一个具有固定大小(我们知道最大大小)缓冲区的类,以及一个长度应始终<=缓冲区的大小,否则断言.通过这种方式,我可以只使用一个变量而不是两个变量来传递数组,如果将来最大的大小发生变化,我应该可以轻松地更改它.我没有为数组使用动态分配,因为它是嵌入式系统和内存分配可能会失败,我们不使用异常.该类可能少于30行代码,我在很多地方使用它.他们说我过度设计了它.
它们在C中有自己的容器实现.我需要使用其中一个,但我想隐藏所有详细的代码,远离我的主逻辑,所以我为它创建了一个包装类.包装类类似于stl,所以我有迭代器并且它在内部管理内存分配,但与stl不同,它在无法分配更多内存时返回错误代码.他们对这个问题的论点是我是唯一一个使用它的人,因此他们不希望它存在于存储库中.说实话,我发现这很愚蠢.
编辑:下面的类或多或少是我用于第1点的.我想要做的就是有一些东西可以传递而不会一直带着长度.
class A
{
static const MAX_SIZE = 20;
int m_Array[MAX_SIZE];
size_t m_Len;
public:
A(const int* array, size_t len)
{
assert(len <= MAX_SIZE);
memcpy(m_Array, array, len);
m_Len = len;
}
size_t GetLen() const { return m_Len; }
const int* GetArray() const { return m_Array; }
};
Run Code Online (Sandbox Code Playgroud) 这让我困扰了一段时间,如果这是一个神话,我没有任何线索.
似乎工厂模式可以减轻为类添加依赖项的痛苦.
例如,在一本书中,它有类似的东西
假设您有一个名为Order的类.最初它并不依赖于任何东西.因此,您不必费心使用工厂来创建Order对象,而您只是使用plain new来实例化对象.但是,您现在要求必须与客户关联创建订单.您需要更改百万个位置才能添加此额外参数.如果您只为Order类定义了一个工厂,那么您可以在没有同样痛苦的情况下满足新要求.
这与为构造函数添加额外参数有何不同?我的意思是你仍然需要为工厂提供一个额外的论据,而且还有百万个地方使用,对吗?