SonarQube

SonarQube是用来检测代码质量的,但类似工具的推广常常遇到阻碍。

成型项目或僵尸项目可以理解,项目优化需要投入的人力成本和时间成本太大,而且最主要的是无法保证改动过程中不引入新的bug。那么大家会想,在项目立项初期配合使用,这应该没什么问题了吧?奈何理由这东西,只要想找,总是有的。毕竟大家都喜欢待在舒适区,不喜欢折腾。试想刚提交完代码没多久,邮件就提醒你需要优化,打开一看,原来又是for循环太多、嵌套太多、重复代码太多或者方法行数太多。why?我实现功能不就行了吗?时间这么紧迫,怎么有时间修改这种问题呢?连这些小问题都抓住不放?呵呵,以后有时间一定改。

我起初也这么想的,虽然知道好的习惯养成很重要,但还是避免不了有所抵触。不过好在上头规定相关类型bug必须清零,坚持的时间一长,收获还是蛮大,最直接的体现就是代码易读性加强了。这个时候我突然就想起了设计模式。

设计模式

自大二接触Java以来,就知道IT界有一种无上功法叫设计模式,然后就一直想着哪天能融会贯通,挥手间,就是一片锦绣代码。

可是这些年过去,设计模式给我的感觉就是遥不可及,仿佛它只存在于面试题中,而且奇怪的是大家闲时谈论技术也很少涉及,why? 首先自我反思,那是自身水平不行,get不到核心,但我相信这不是全部原因。

我认为设计模式的出现是为了更好的写好代码,它只是手段,不是目的。奈何这系列手段太高明,完全不是初级菜鸟的菜。初级菜鸟没掌握,那大神级别的平常为什么也不怎么谈论设计模式呢?我想,可能是因为不同层级的人,如果用设计模式里面的逼格名词谈论,根本就无法沟通,因为我们平常是这么讨论的:

  • 这个类负责创建这个对象,对。然后这边包装一下,对的。
  • 嗯,你这个类就是针对他的Interface做的一个Adapter,是的。
  • 你这个只创建一次,提高性能。哦,对,没错,但这样更好,balabala...

所以设计模式大部分情况下只是给大家提供了一条快速提升逼格的途径,要是没有时间上的积累,就算把所有设计模式的名字都背下来,可能还是不太会用 0.0

SonarQube & 设计模式

那么怎么才能优雅的掌握设计模式呐,想来想去,我的方法是先了解它的各种使用,知道它的存在,然后在具体的使用层面上只是借鉴它。如果你对代码有高要求,在任何情况下,都会努力去提高代码的可读性,都会去控制你的代码量、减少嵌套与循环、减少各种潜在风险时,我想时间长了,无师自通,自有一番风景。

从SonarQube谈设计模式的更多相关文章

  1. 以css为例谈设计模式

    什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的解释:"设计模式(Des ...

  2. 浅谈设计模式-visitor访问者模式

    先看一个和visitor无关的案例.假设你现在有一个书架,这个书架有两种操作,1添加书籍2阅读每一本书籍的简介. //书架public class Bookcase { List<Book> ...

  3. iOS 趣谈设计模式——通知

    [前言介绍] iOS的一种设计模式,观察者Observer模式(也叫发布/订阅,即Publich/Subscribe模式). 观察者模式,包含了通知机制(notification)和KVO(Key-v ...

  4. 浅谈设计模式--装饰者模式(Decorator Pattern)

    挖了设计模式这个坑,得继续填上.继续设计模式之路.这次讨论的模式,是 装饰者模式(Decorator Pattern) 装饰者模式,有时也叫包装者(Wrapper),主要用于静态或动态地为一个特定的对 ...

  5. 浅谈设计模式--单例模式(Singleton Pattern)

    题外话:好久没写blog,做知识归纳整理了.本来设计模式就是个坑,各种文章也写烂了.不过,不是自己写的东西,缺少点知识的存在感.目前还没做到光看即能记住,得写.所以准备跳入设计模式这个大坑. 开篇先贡 ...

  6. 浅谈设计模式在GIS中的应用

    设计模式在GIS中的应用 一.设计模式概述 随着面向对象技术的广泛应用,软件复用在越来越多的开发工程中被采用.在研究软件复用的过程中,设计模式的概念被提了出来.所谓设计模式就是一些设计面向对象的软件的 ...

  7. ios开发之再谈设计模式

    子曰:设计模式这东西,没有好坏之分,只有合适于不合适 天去面试很有意思,技术考官指着最后一道二选一的编程题说,这是昨天晚上专门为你新加的.当时我听后倍感惭愧. 虽然当时在纸上把大概思路和设计说了下.为 ...

  8. Spring源码分析 之浅谈设计模式

    一直想专门写个Spring源码的博客,工作了,可以全身性的投入到互联网行业中.虽然加班很严重,但是依然很开心.趁着凌晨有时间,总结总结. 首先spring,相信大家都很熟悉了. 1.轻量级  零配置, ...

  9. [Android&amp;Java]浅谈设计模式-代码篇:观察者模式Observer

    观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...

随机推荐

  1. JVM初探之类文件结构

    java 的 .class 文件字节码如图:Class 文件是一组以8字节为基础单位的二进制流,各个数据项目有着严格的结构.下面我们介绍下class文件的结构. 魔数 class文件的头4个字节是魔数 ...

  2. WCF和ASP.NET Web API在应用上的选择

    小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/shareto ...

  3. Python isinstance

    语法:isinstance(object,type) 作用:来判断一个对象是否是一个已知的类型. 其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个列表( ...

  4. 发散问题——Spring容器及加载

    一.前言 发散问题系列,是围绕日常工作,发散思考,提取问题,并寻求答案的一个系列.总的来说,就是将遇到的问题发散来提出更多的问题,并通过解决发散问题,从而对问题有更深入的了解,对知识有更深刻的记忆,帮 ...

  5. 大麦盒子(domybox)无法进入系统解决方案!【简单几步】

    大麦无法进入系统解决方案![简单几步]前提准备:电脑一台盒子控制台软件盒子开机并联网并且盒子和电脑处于同一个路由器下的网络! 前提准备:电脑一台盒子控制台软件盒子开机并联网并且盒子和电脑处于同一个路由 ...

  6. js闭包(closure),个人理解

    一.闭包概念理解 各种专业文献上对js"闭包"(closure)定义非常抽象,贼难看懂.我的理解是,闭包就是能够读取某函数内部变量的函数.由于在Javascript语言中只有在函数 ...

  7. Python 基础 一

    Python 基础  一 一.关于Python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum),这一两年在国内很流行,应用很广泛. 二.Python的基础知识(1) 1 ...

  8. java 并发工具类CountDownLatch & CyclicBarrier

    一起在java1.5被引入的并发工具类还有CountDownLatch.CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它们都存在于ja ...

  9. typedef和define的详细区别

    typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. #define是预处理指令.下面让我们一起来看. typedef是C语言语句, ...

  10. jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创

    简单的两个步骤截可调用 <script src="<%=basePath%>/resources/js/jquery-1.7.1.min.js"></ ...