【发布时间】:2009-12-28 06:07:32
【问题描述】:
我正在用 C 编写一个 shell。虽然我不希望有很多其他人使用它,但我想练习编写可维护且组织良好的代码。我在我的一些函数中注意到了以下模式,所以在它固化之前,我希望它能够得到全面审查。
例如,考虑以下函数:
int foo(int param...) {
// declare variables
struct bar *a, *b, *c;
// do some work
a = bar_creator();
b = bar_modifier(a);
c = bar_modifier(b);
// cleanup
free(a);
free(b);
free(c);
return 1;
}
注意事项:
三个阶段:声明、启动/修改、清理
新分配的结构通常作为其他对象的修改副本从函数返回
不需要大量对象,因此内存使用不是问题
就目前而言,这三个部分相对不同。这使我可以匹配第一部分和最后一部分,并确保所有内容都得到考虑。现在我想知道更好的风格是否可能是在不需要时立即释放某些东西。这样做的动机可能是最小化代码段有意义的上下文。
您的资源重新分配方法是什么?给定策略的优势是什么?
编辑
消除对函数行为的任何混淆:
/**
* returns a newly created bar
*/
struct bar *bar_creator();
/**
* takes a bar, and returns a _new_ copy of it that may have been modified.
* the original is not modified.
*/
struct bar *bar_modifier(struct bar *param);
【问题讨论】:
-
可能值得开发一种命名约定,以明确函数何时返回新对象,而不是修改现有对象。
标签: c coding-style