从SonarQube谈设计模式
SonarQube
SonarQube是用来检测代码质量的,但类似工具的推广常常遇到阻碍。
成型项目或僵尸项目可以理解,项目优化需要投入的人力成本和时间成本太大,而且最主要的是无法保证改动过程中不引入新的bug。那么大家会想,在项目立项初期配合使用,这应该没什么问题了吧?奈何理由这东西,只要想找,总是有的。毕竟大家都喜欢待在舒适区,不喜欢折腾。试想刚提交完代码没多久,邮件就提醒你需要优化,打开一看,原来又是for循环太多、嵌套太多、重复代码太多或者方法行数太多。why?我实现功能不就行了吗?时间这么紧迫,怎么有时间修改这种问题呢?连这些小问题都抓住不放?呵呵,以后有时间一定改。
我起初也这么想的,虽然知道好的习惯养成很重要,但还是避免不了有所抵触。不过好在上头规定相关类型bug必须清零,坚持的时间一长,收获还是蛮大,最直接的体现就是代码易读性加强了。这个时候我突然就想起了设计模式。
设计模式
自大二接触Java以来,就知道IT界有一种无上功法叫设计模式,然后就一直想着哪天能融会贯通,挥手间,就是一片锦绣代码。
可是这些年过去,设计模式给我的感觉就是遥不可及,仿佛它只存在于面试题中,而且奇怪的是大家闲时谈论技术也很少涉及,why? 首先自我反思,那是自身水平不行,get不到核心,但我相信这不是全部原因。
我认为设计模式的出现是为了更好的写好代码,它只是手段,不是目的。奈何这系列手段太高明,完全不是初级菜鸟的菜。初级菜鸟没掌握,那大神级别的平常为什么也不怎么谈论设计模式呢?我想,可能是因为不同层级的人,如果用设计模式里面的逼格名词谈论,根本就无法沟通,因为我们平常是这么讨论的:
- 这个类负责创建这个对象,对。然后这边包装一下,对的。
- 嗯,你这个类就是针对他的Interface做的一个Adapter,是的。
- 你这个只创建一次,提高性能。哦,对,没错,但这样更好,balabala...
所以设计模式大部分情况下只是给大家提供了一条快速提升逼格的途径,要是没有时间上的积累,就算把所有设计模式的名字都背下来,可能还是不太会用 0.0
SonarQube & 设计模式
那么怎么才能优雅的掌握设计模式呐,想来想去,我的方法是先了解它的各种使用,知道它的存在,然后在具体的使用层面上只是借鉴它。如果你对代码有高要求,在任何情况下,都会努力去提高代码的可读性,都会去控制你的代码量、减少嵌套与循环、减少各种潜在风险时,我想时间长了,无师自通,自有一番风景。

从SonarQube谈设计模式的更多相关文章
- 以css为例谈设计模式
什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的解释:"设计模式(Des ...
- 浅谈设计模式-visitor访问者模式
先看一个和visitor无关的案例.假设你现在有一个书架,这个书架有两种操作,1添加书籍2阅读每一本书籍的简介. //书架public class Bookcase { List<Book> ...
- iOS 趣谈设计模式——通知
[前言介绍] iOS的一种设计模式,观察者Observer模式(也叫发布/订阅,即Publich/Subscribe模式). 观察者模式,包含了通知机制(notification)和KVO(Key-v ...
- 浅谈设计模式--装饰者模式(Decorator Pattern)
挖了设计模式这个坑,得继续填上.继续设计模式之路.这次讨论的模式,是 装饰者模式(Decorator Pattern) 装饰者模式,有时也叫包装者(Wrapper),主要用于静态或动态地为一个特定的对 ...
- 浅谈设计模式--单例模式(Singleton Pattern)
题外话:好久没写blog,做知识归纳整理了.本来设计模式就是个坑,各种文章也写烂了.不过,不是自己写的东西,缺少点知识的存在感.目前还没做到光看即能记住,得写.所以准备跳入设计模式这个大坑. 开篇先贡 ...
- 浅谈设计模式在GIS中的应用
设计模式在GIS中的应用 一.设计模式概述 随着面向对象技术的广泛应用,软件复用在越来越多的开发工程中被采用.在研究软件复用的过程中,设计模式的概念被提了出来.所谓设计模式就是一些设计面向对象的软件的 ...
- ios开发之再谈设计模式
子曰:设计模式这东西,没有好坏之分,只有合适于不合适 天去面试很有意思,技术考官指着最后一道二选一的编程题说,这是昨天晚上专门为你新加的.当时我听后倍感惭愧. 虽然当时在纸上把大概思路和设计说了下.为 ...
- Spring源码分析 之浅谈设计模式
一直想专门写个Spring源码的博客,工作了,可以全身性的投入到互联网行业中.虽然加班很严重,但是依然很开心.趁着凌晨有时间,总结总结. 首先spring,相信大家都很熟悉了. 1.轻量级 零配置, ...
- [Android&Java]浅谈设计模式-代码篇:观察者模式Observer
观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...
随机推荐
- Struts2基础学习(二)—Action
一.ActionSupport 为了让用户开发的Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理类应该实现的规范.下面是标准A ...
- POI框架实现创建Excel表、添加数据、读取数据
public class TestPOI2Excel {//创建2003版本Excel用此方法 @Test public void testWrite03Excel() throws Exceptio ...
- Apriori算法(C#)
AprioriMethod.cs using System; using System.Collections.Generic; using System.Linq; using System.Web ...
- SQL Server 死锁概念和分析
锁的概念 锁是什么 锁是数据库中在并发操作情形下保护资源的机制.通常(具体要看锁兼容性)只有锁的拥有者才能对被锁的资源进行操作,从而保证数据一致性. 锁的概念可分为几部分 锁资源(锁住什么) 锁模式( ...
- 【R】正态检验与R语言
正态检验与R语言 1.Kolmogorov–Smirnov test 统计学里, Kolmogorov–Smirnov 检验(亦称:K–S 检验)是用来检验数据是否符合某种分布的一种非参数检验,通过比 ...
- win8.1启用ahci后蓝屏
先简单介绍一下,本应该win7开始,系统安装的时候默认就启用了ahci硬盘模式.但是博主犯了傻,装了win8.1后安装win XP形成双系统.xp并不支持ahci模式,所以将硬盘模式改成了IDE模式, ...
- jdk动态代理与cglib代理、spring aop代理实现原理解析
原创声明:本博客来源为本人原创作品,绝非他处摘取,转摘请联系博主 代理(proxy)的定义:为某对象提供代理服务,拥有操作代理对象的功能,在某些情况下,当客户不想或者不能直接引用另一个对象,而代理对象 ...
- dispatch_group_t 日常使用注意事项
一.背景简介平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理.那么就可以将多个任务放在一个任务组中进行统一管理.dispatch提供了相应的A ...
- Java多线程中线程间的通信
一.使用while方式来实现线程之间的通信 package com.ietree.multithread.sync; import java.util.ArrayList; import java.u ...
- python练习_12
题目:敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」.(11 ...