优芽机构——3、4轮迭代总结

  首先说下《代码大全》这本书,此书可作为程序员的圣经,相信各个阶段的程序员看此书的收获都不会小。新手可以通过此书来提高自己的专业技能、学习项目开发的流程。经验丰富的程序员可以通过此书来提高自己的代码质量,检查自己的不足和bug。

  但由于此书很多都是理论上的知识,具体还需要自己在工作上和实践中多敲代码多体会。与此书配套的书还包括《重构》、《设计模式》、《算法导论》等。

  此轮的迭代收获最大的就是编写代码的质量,从三个方面入手:可以工作的类、高效的子程序和防御式编程。

  一、可以工作的类:

      看完《代码大全》发现自己以前写的类几乎都是面向过程在思考,并不属于OOP的思想。首先,类作为现实生活中的对象的映射,应该是被看做整体,没多余或者不属于此对象的元素。好比一匹马不可能有翅膀,所以“马”这个对象如果想上天至少需要两个对象——“飞机”和“马”。但是原来写代码的时候常常会在“马”这个类中加上“飞机”的元素,正常应该写两个类,然后调用。

      一个高质量的类的内聚性一定非常好,没有多余的元素,也没有缺少的元素,不需要将它拆开,形成一个完整的抽象。


二、高效的子程序

     如果说类是一个工厂的话,那子程序就是工厂上的每个机器,一个机器仅仅负责一件事。

     此轮迭代中,针对缓存进行了很大部分的优化,其中需要:1、用户的菜单从缓存中获取,2、如果获取不到需要进数据库load数据,3、然后放入缓存,4、再从缓存中获取。

     以前本人写的代码会在一个子程序中将234的具体细节全部实现,这样写虽然功能实现了,但是代码质量却非常低:

1、很不利于阅读。程序其实是给程序猿看的,根本不是给机器看的。臃肿的代码交给其它程序猿的话,对方很可能很难看懂。

2、不利于维护。很多的功能放在一起,如果其中某一块出现问题,那很可能也会牵扯带这个子程序其它的流程。

3、可以说不符合OOP的思想,因为没有一个机器可以直接造出一台汽车(原谅本人大学是机械专业的)。

     后面修改代码,具体的细节改成:1、用户的菜单从缓存中获取,2、从数据库load数据,3、将数据放入缓存,4、从缓存中取数据。好处有以下几点:

 1、这样代码结构很清晰,映射出编写此程序的程序员的思维也很清晰,阅读人员可以很快接受。

2、符合oop的思想,这些子程序每一个都只负责处理一件事,并且这些子程序很独立,即使脱离这个类,仍然能够保持自己的语义,不会因为环境变化而导致语义发生变化。

3、维护方便。如果某个地方出问题就只需要修改某一个子程序,不需要修改其它的部分,减少维护量。


三、防御式编程

     许多的编程都应该按照此思想去写,这样才能减少崩溃的概率,让编写出的程序足够健壮。

     

private List<String> getOrgMenuIdsFromCache(String orgId) {
    if (StringUtils.isEmpty(orgId))
        return null;
    //将数据库中的menuIds放入缓存,再返回这个缓存的menuIds
    String menuIds = GlobalCacheUtil.getVarStringValue(OrgUtil.getOrgMenuIdsCacheName(orgId));
    if (null == menuIds || StringUtils.isEmpty(menuIds))
        menuIds = OrgUtil.getOrgMenuActionCache(orgId);
    try {
        return JSON.parseArray(menuIds, String.class);
    } catch (Exception e) {
        logger.error(menuIds);
        logger.error("JsonUtil 解析json获取 data失败");
    }
    return null;
}

   以上这段代码,很好的保持这种风格,在可能出现错误的位置都进行了判断。如果在此处出错也不会对整个系统产生什么大的影响。


    当然,从结构的和风格上来看,代码还是有很多不足,比如子程序过长、不够紧凑、用的方法不够严谨、没有注意高扇入低扇出的要求等等。在以后的工作中会更加严谨的对待代码的编写。

转载于:https://my.oschina.net/u/2357858/blog/525834

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值