成长之路---写好一个方法

     提高自己和培养人才应该循序渐进,首先要能写好一个方法,之后能写好一个类,之后能写好一个程序,之后能做好一个产品......

怎样才能写好一个方法呢?
(下面给大家以伪代码形式的伪代码给大家举一个例子,仅仅是为了介绍一种思路)

首先明确方法的作用,确定参数个数,意义,类型及格式

注释采用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
*/

 考虑几个点
<type> GrowUp( const <type>in_param, ..<type> out_param..)
{

    1.有入参,要检查参数的有效性
    2.如果有需要的话申请资源
    3.处理业务
    4.如果资源需要释放的话,切记一定要释放资源(也可以在申请资源处用智能指针或者局部对象析构来释放资源。就可省略此步)

     return <type>;
}

这样算是一个良好的方法了吗?在某些场景下是吧!以下继续:如果逻辑支持异常处理的话
<type> GrowUp( const <type>in_param, ..<type> out_param..)
{
    .....
    假定在这里支持异常处理
    try
    {
        3.处理业务
    }
    catch(e&)
   {  
        return <type>?????               (很严重啊!资源释放了吗?注 意啊!把4复制到前面去吧)
    }
   .....
}


这样的方法已经不错了吧!在某些应用场景下是吧!如果要考虑并发呢?以下继续
<type> GrowUp( const <type>in_param,..<type> out_param..)
{
   比如用boost,当然还有其他实现,只是介绍一种思路
   boost::unique_lock<boost::mutex> lock(mutex_);
   ......
}


这时的方法呢?还不错,但是你忘记了,最后是用户使用产品,要是出了错你可不能单步调试了啊,于是,加上日志输出吧
<type> GrowUp( const <type>in_param,..<type> out_param..)
{
   拿强大的log4cxx吧
   LOG4CXX_TRACE
   ...
  LOG4CXX_WARN
   LOG4CXX_ERROR
   随你输出想要的信息  
}


这时的方法已经很不错了,但是你还没测试呢?所以进行单元测试吧,以gtest举例
TEST(Test, GrowUpTest)
{
   ASSERT_TRUE
   ASSERT_ANY_THROW
        ....
}

现在你可以放心使用这个方法了吧!

本文出自 “永远的朋友” 博客,请务必保留此出处http://yaocoder.blog.51cto.com/2668309/800696

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值