提高自己和培养人才应该循序渐进,首先要能写好一个方法,之后能写好一个类,之后能写好一个程序,之后能做好一个产品......
怎样才能写好一个方法呢?
(下面给大家以伪代码形式的伪代码给大家举一个例子,仅仅是为了介绍一种思路)
首先明确方法的作用,确定参数个数,意义,类型及格式
注释采用Doxygen的注释方式,至于优点,请google
/**
* <A short one line description>
*
* <Longer description>
* <May span multiple lines or paragraphs as needed>
*
* @param Description of method's or function's input parameter
* @param ...
* @return Description of the return value
*/
* <A short one line description>
*
* <Longer description>
* <May span multiple lines or paragraphs as needed>
*
* @param Description of method's or function's input parameter
* @param ...
* @return Description of the return value
*/
考虑几个点
<type> GrowUp(
const <type>in_param, ..<type> out_param..)
{
1.有入参,要检查参数的有效性
2.如果有需要的话申请资源
3.处理业务
4.如果资源需要释放的话,切记一定要释放资源(也可以在申请资源处用智能指针或者局部对象析构来释放资源。就可省略此步)
return <type>;
}
{
1.有入参,要检查参数的有效性
2.如果有需要的话申请资源
3.处理业务
4.如果资源需要释放的话,切记一定要释放资源(也可以在申请资源处用智能指针或者局部对象析构来释放资源。就可省略此步)
return <type>;
}
这样算是一个良好的方法了吗?在某些场景下是吧!以下继续:如果逻辑支持异常处理的话
<type> GrowUp(
const <type>in_param, ..<type> out_param..)
{
.....
假定在这里支持异常处理
try
{
3.处理业务
}
catch(e&)
{
return <type>????? (很严重啊!资源释放了吗?注 意啊!把4复制到前面去吧)
}
.....
}
{
.....
假定在这里支持异常处理
try
{
3.处理业务
}
catch(e&)
{
return <type>????? (很严重啊!资源释放了吗?注 意啊!把4复制到前面去吧)
}
.....
}
这样的方法已经不错了吧!在某些应用场景下是吧!如果要考虑并发呢?以下继续
<type> GrowUp(
const <type>in_param,..<type> out_param..)
{
比如用boost,当然还有其他实现,只是介绍一种思路
boost::unique_lock<boost::mutex> lock(mutex_);
......
}
{
比如用boost,当然还有其他实现,只是介绍一种思路
boost::unique_lock<boost::mutex> lock(mutex_);
......
}
这时的方法呢?还不错,但是你忘记了,最后是用户使用产品,要是出了错你可不能单步调试了啊,于是,加上日志输出吧
!
<type> GrowUp(
const <type>in_param,..<type> out_param..)
{
拿强大的log4cxx吧
LOG4CXX_TRACE
...
LOG4CXX_WARN
LOG4CXX_ERROR
随你输出想要的信息
}
{
拿强大的log4cxx吧
LOG4CXX_TRACE
...
LOG4CXX_WARN
LOG4CXX_ERROR
随你输出想要的信息
}
这时的方法已经很不错了,但是你还没测试呢?所以进行单元测试吧,以gtest举例
TEST(Test, GrowUpTest)
{
ASSERT_TRUE
ASSERT_ANY_THROW
....
}
{
ASSERT_TRUE
ASSERT_ANY_THROW
....
}
现在你可以放心使用这个方法了吧!
本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/800696如需转载请自行联系原作者
yaocoder