从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.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...
随机推荐
- 在开源中国(oschina)上创建托管项目
***************************************************************** 目标: 1.能上传自己的项目到oschina上并且进行管理 2.能进 ...
- C#中的DateTime是值类型还是引用类型
近期遇到了DateTime到底是值类型还是引用类型的疑惑,顺势较深入地了解一下DateTime相关的内容 结论:DateTime是值类型,因为DateTime是结构体,而结构体继承自Syste.Val ...
- js 计时器小练-20160601
今天要做一个计时器小练,所以我就做了练习,代码如下. // 初始化时间,以及定义全局量去接收计时器 var timer = 0; var t; var h, min, sec, millisec; / ...
- SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除临时表(drop table #tableName)吗?
本文出处:http://www.cnblogs.com/wy123/p/6704619.html 问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表,有些人习惯在存储过程结束的时 ...
- 感觉不止被Q了一下,还不知道被谁套了一个虚弱
最近身体出现了一些问题,导致博客无法正常更新,只能是看身体状态更新了,相信用不了半个月就会满血复活的,请谅解 Joker在这里提醒大家 身体是革命的本钱,不要透支,不要过度消耗
- vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包。
最近新装了2017,开始前几天还好, 可是最近在添加引用时,报错 ---------------------------Microsoft Visual Studio----------------- ...
- (原)HashMap之java8新特性
首先说一下HashMap存储结构,数组.链表.树这三种数据结构形成了hashMap.存储结构下图所示,根据key的hash与table长度确定table位置,同一个位置的key以链表形式存储,超过一定 ...
- react+redux+generation-modation脚手架添加一个todolist
当我遇到问题: 要沉着冷静. 要管理好时间. 别被bug或error搞的不高兴,要高兴,又有煅炼思维的机会了. 要思考这是为什么? 要搞清楚问题的本质. 要探究问题,探究数据的流动. TodoList ...
- bzoj4810 [Ynoi2017]由乃的玉米田
Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐. 由乃认为玉米田不美,所以她决定出个数据结构题 这个题是这样的: 给你一 ...
- input 显示/隐藏密码
js代码: // 显示/隐藏密码 $('.open').on('click',function(){ if($("#psw").prop('type')=='password'){ ...