从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.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...
随机推荐
- 现代3D图形编程学习-设置三角形颜色(译)
本书系列 现代3D图形变成学习 http://www.cnblogs.com/grass-and-moon/category/920962.html 设置颜色 这一章会对上一章中绘制的三角形进行颜色的 ...
- salesforce 零基础学习(七十)使用jquery table实现树形结构模式
项目中UI需要用到树形结构显示内容,后来尽管不需要做了,不过还是自己做着玩玩,mark一下,免得以后项目中用到. 实现树形结构在此使用的是jquery的dynatree.js.关于dynatree的使 ...
- 使用swagger实现web api在线接口文档
一.前言 通常我们的项目会包含许多对外的接口,这些接口都需要文档化,标准的接口描述文档需要描述接口的地址.参数.返回值.备注等等:像我们以前的做法是写在word/excel,通常是按模块划分,例如一个 ...
- 转载---关于Spring的69个面试问答
链接:http://www.importnew.com/11657.html 目录 Spring概述 依赖注入 Spring Beans Spring注解 Spring的对象访问 Spring面向切面 ...
- JavaScript高级程序设计---学习笔记(五)
1.2D上下文 1)填充与描边 填充和描边的两个操作取决于两个属性:fillStyle和strokeStyle.两个属性的值可以是字符串.渐变对象或模式对象,默认值都是#000000 例: html: ...
- Linux 基础(3)
Linux 基础(三) rpm与yum学习 本篇分享一下自己学习rpm和yum过程中的一些心得,自己在使用yum过程中由于自己的虚拟机网络的问题在学习这一块品尝到不少苦头,还望学习这块的盆友先检查一下 ...
- poj2104 Kth-Number
Description You are working for Macrohard company in data structures department. After failing your ...
- 最简单bat教程
请移到此处查看 http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html
- poj1990树状数组
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...
- 1013 Realtime Status
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...