KISS原则】的更多相关文章

优秀程序设计的Kiss原则(keep it simple,stupid) 良好的编程原则与良好的设计工程原则密切相关.本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员. 1.避免重复原则(DRY – Don’t repeat yourself) 编程的最基本原则是避免重复.在程序代码中总会有很多结构体,如循环.函数.类等等.一旦你重复某个语句或概念,就会很容易形成一个抽象体. 2.抽象原则(Abstraction Principle ) 与DRY原则相关.要记住,…
本章目的:理解kiss原则,明确如何简化产品的设计. 1.前言:kiss原则,优化产品的第一原则 如果要作者选出一个优化产品的最好方法,那一定是kiss原则莫属.从产品的整体设计到公差的分析,kiss原则可以说贯穿整个结构设计的本身.而且其带来的效果,也在各个统计数据中显而易见.当然,kiss原则没那么容易做,去实施就要下一定的决心. 2.kiss原则概念 Keep It Simple, Stupid--KISS原则.KISS原则是指产品的设计越简单越好,简单就是美,任何没有必要的复杂都是需要避…
摘自:https://kb.cnblogs.com/page/654057/ 作者: 贺卓凡  来源: ImportSource  发布时间: 2020-01-23 19:52  阅读: 2324 次  推荐: 20   原文链接   [收藏] 大约在60年前,美国军方的软件开发开始遵循一个原则,叫KISS原则.他们希望武器系统中所用的每个指令都是极其简单和傻瓜式的.这个原则后来在编程领域中被广泛采用,如今好多著名的开源框架都是遵循这一原则来开发,并最终取得了巨大的成功. 在上一文中<Apach…
Keep It Simple, Stupid 1. 模块性原则:写简单的,通过干净的接口可被连接的部件:2. 清楚原则:清楚要比小聪明好.3. 合并原则:设计能被其它程序连接的程序.4. 分离原则:从机制分离从策略,从实现分离出接口.5. 简单原则:设计要简单:只有当你需要的时候,增加复杂性:6. 节俭原则:只有当被证实是清晰,其它什么也不做的时候,才写大的程序7. 透明原则:为使检查和调试明显更容易而设计8. 健壮性原则:健壮性是透明和简单的追随者9. 表现原则:把知识整理成资料,于是程序逻辑…
1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②KISS原则:Keep It Simple and Stupid! 代码保持简洁和具有表现力! --语义化标记.注释.变量或者方法的命名.减少嵌套: ③DRY原则:Don't Repeat Yourself! 模块的封装! --提高代码复用率,降低测试难度方便后期的迭代和维护: ④high cohes…
以前为了做compiler,研读+实现了几乎所有种类的语言.现在看语法手册几乎很快就可以理解整个语言的内容.后来我对比了一下go和rust,发现go的类型系统简直就是拼凑的.这会导致跟C语言一样,需要高超的技巧才能写大程序.而rust则没有这种问题,每个部分的组成都很和谐.---------------------------------------------------------------------- Rust是挺优秀的,函数式本来就比命令式来的优雅.但同时也要看到,两种语言的定位不同…
很多编程的人,喜欢鼓吹各种各样的“原则”,比如KISS原则,DRY原则…… 总有人把这些所谓原则奉为教条或者秘方,以为兢兢业业地遵循这些,空喊几个口号,就可以写出好的代码.同时,他们对违反这些原则的人嗤之以鼻——你不知道,不遵循或者藐视这些原则,那么你就是菜鸟.所谓“DRY原则”(Don’t Repeat Yourself,不要重复你自己)就是这些教条其中之一.盲目的迷信DRY原则,在实际的工程中带来了各种各样的问题,却经常被忽视. 简言之,DRY原则鼓励对代码进行抽象,但是鼓励得过了头.DRY…
KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序:编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口.这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原则”无处不在.大部分隐式的UNIX哲学不是这些前辈所说的,而是他们所做的和UNIX自身建立的例子.从整体上看,我们能够抽象出下面这些观点: 1. 模块性原则:写简单的,通过干净的接口可被连接的部件.2. 清楚原则:清楚要比小聪明好.3. 合并原则:设计…
面向对象 现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程.面向对象和函数式编程.面向对象这种编程风格又是这其中最主流的.现在比较流行的编程语言大部分都是面向对象编程语言.大部分项目也都是基于面向对象编程风格开发的.面向对象编程因为其具有丰富的特性(封装.抽象.继承.多态),可以实现很多复杂的设计思路,是很多设计原则.设计模式编码实现的基础. 所以,在专栏的最开始,我们会详细地讲解面向对象编程的相关的知识,为学习后面的内容做铺垫.对于这部分内容,你需要掌握下面这 7 个大的知识点.…
1.什么是开闭原则 开闭原则的英文是Open Closed Principle,缩写就是OCP.其定义如下: 软件实体(模块.类.方法等)应该"对扩展开放.对修改关闭". 从定义上看,这个原则主要包含两部分: 对扩展开放:" 这意味着模块的行为是可以扩展的.当应用程序的需求改变时,我们可以对其模块进行扩展,使其具有满足那些需求变更的新行为.换句话说,我们可以改变模块的功能. 对修改关闭:" 对模块行为进行扩展时,不必改动该模块的源代码或二进制代码.模块的二进制可执行…
在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实现) 设计原则 设计模式 几个问题 单一职责原则的职责是什么 依赖倒置中的依赖是什么?(依赖注入DI,和 IOC 控制反转) 组合与聚合的区别是什么 贫血模型与充血模型的差异在什么地方 阅读开源项目代码时,单个方法可以理解,整体看不懂 为什么要学习设计模式 有助于更快地读懂开源项目代码 自己编写通用…
目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You Aren't Gonna Need It 你不会需要它的) CCP 共同闭包 CRP 共同复用 高内聚.低耦合 惯例优先配置 SCO 关注点分离 ADP 无依赖环 SOLID 面向对象设计原则 SOLID S - Single-responsiblity Principle 单一职责 O - Op…
什么是sharding Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库 (server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上.如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID 散列)切分到多个数据库(server)上.当然,现实中更多是这两种情况混杂在一起,这时候需要根据实际情况做出选择…
线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自客户端的请求.Java中对于线程池的支持,来自ThreadPoolExecutor.一些应用服务器也确实是使用的ThreadPoolExecutor来实现线程池. 对于线程池的性能调优,最重要的参数就是线程池的大小. 对于任何线程池而言,它们的工作方式几乎都是相同的: 任务被投放到一个队列中(队列的…
Redis不是比较成熟的memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.首先简单公布一下Redis平台实际情况: 2200+亿 commands/day 5000亿Read/day 500亿Write/day 18TB+ Memory 500+ Servers in 6 IDC 2000+instances 应该是国内外比较大的Redis使用平台,今天主要从应用角度谈谈Redis服务平台. Redis使用场…
转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 英文原文:Introduction to Model-View-Presenter on Android 转载此译文需注明出处: http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 这是一篇观点比较激进的文章,完全否定了MVC模式在安卓开发的中的意义,认为…
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什么是UI了.这是您一定会问那NGUI又是什么呢?这个问题问得好? 我先来介绍一下Unity3D自带的UI层. 在Unity3D中原始就提供一套UI框架,但是由于性能特别差,用起来不是那么的方便和顺手(您可以自己去研究一下自带的UI会发现很多好玩的).在这样的情况下衍生出很多第三方的UI插件.目前公司…
一.问题:     数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求. 二.解决方案:      1.通过高速服务器Cache缓存数据库数据      2.内存数据库 三.主流解Cache和数据库对比: 从以上各数据可知,对于我们产品最可行的技术方案有两种:          1.Memcached         内存Key-Value Cache          2.Redis                     内存数据库 四,节约内存:Instagram的Redi…
0x01 extern用在变量或函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”. 0x02 extern修饰变量的声明. 举例:若a.c中需引用b.c中的变量int v,可以在a.c中声明extern int v,然后就可以引用变量v;需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到变量v,不只是取决于在a.c中声明extern int v,还取决于变量v本身是能够被引用到的.这里涉及到另外一个话题---变量的作用域.能够被其他…
Kelly Johnson提出了KISS原则.他是一个飞机工程师以及航空发明家,同时也是一个管理天才,他一生中主要设计了40多架飞机,获得的荣誉相当之多,总之,很牛. 这个原则是对Johnson带领的设计工程师团队最好的例证,他们在设计飞机时,必须考虑 到假如飞机在交战情况下出了故障,如何让普通的机械师修理飞机? 这就是这个原则产生的历史背景. 因此,stupid不是愚蠢的意思,而是指普通. 讲一个小故事:日本最大的化妆品公司收到客户抱怨买来的肥皂盒里面是空的,于是他们为了预防生产线再次发生这样…
作者: 包云岗  发布时间: 2012-05-19 13:06  阅读: 3036 次  推荐: 1   原文链接   [收藏] 最近多次看到系统设计与实现的文章与讨论,再加上以前读过的其他资料以及自己的一些实践教训,让我觉得应该把这些资料汇总整理一下.如果要从讨论不同系统的众多资料中总结一条黄金法则的话,那只有一个词——“简单”:如果用一个英语单词来表达的话,那就是——KISS (Keep It Simple, Stupid!). 麻省理工方法与新泽西方法(MIT Approach vs. N…
1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间. 2.Memcached与MySQL数据库数据一致性问题. 3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无…
本文是<快速创建网站>系列的第5篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag/wordpress-on-azure/ 1. 网站管理平台WordPress和云计算平台Azure简介 (6分钟视频 )2.1 在Azure上创建网站及网站运行机制 (13分钟视频)2.2 域名绑定操作和Azure负载均衡机制 (12分钟视频)2.3 WordPress 初始化和网站管理功能 (11分钟视频…
Seajs是什么及sea.js 由来,特点以及优势 这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享   1.Seajs简介   Seajs,一个Web模块加载框架,追求简单.自然的代码书写和组织方式,:Sea.js 遵循 CMD 规范,模块化JS代码.依赖的自动加载.配置的简洁清晰,可以让程序员更多地专注编码.   2.Seajs优缺点   优点: 1).提高可维护性. 2).模块化编程. 3).动态加…
FROM : http://my.oschina.net/caroltc/blog/324024 1.html2ps and html2pdf    下载地址: http://www.tufat.com/script19.htm html2ps能够把带有图片,复杂表格(包含rowspan/colspan) ,layer/div和css样式的HTML转换成Postscript与PDF.html2ps对CSS2.1支持非常好,并且很好地兼容不正确的HMTL. 2.Sphider  下载地址: htt…
S型的燃尽图 在一次milestone开发过程中,开发者会持续编辑issue列表,每个issue都有自己的生命周期.燃尽图预期这些issues会被线性的消灭掉,所以从第一天直接到最后一天画个直线表示预期进度变化,然而实际开发会遇到各种困难,所以实际的进度变化曲线往往不是线性变化的,下面这篇文章给出了S型燃尽图: https://sandofsky.com/blog/the-s-curve.html 三进制 计算机是基于二进制的,有一句经典的台词是:这个世界上有两种人,一种是懂10进制的,另一种是…
 沉寂了很久了,时间在不断地逝去,转眼又到了新的一年,2013的发生了太多,Beta版本.辞职.职位转换.ARM.Driver.初级厨艺.Dx11.GPU.CPU.登山.GNU/Linux.Cross-Platfrom Tool Chain.GLES.Android...难以计算,日子依然忙碌,孑然一身,这个世界于我依然有太多未知,想法却是越来越少了,也不知到底是好是坏,愿始终做一块海绵,继续努力行走下去!   最近正被Linux折腾的头疼,顺道转一篇关于UNIX/C世界的前世今生, 默默地向D…
GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral).下面来做详细的剖析. 创建型 创建型模式处理对象构造和引用.他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则. 下面是“创建型”分组中的模式: 1.Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象. 2.Factory Met…
不得不看的两次从C++回归C的高手评论C++ Linux之父炮轰C++:糟糕程序员的垃圾语言 Linux之父话糙理不糙 不得不看的两次从C++回归C的高手评论C++ C语言是否该扔进垃圾桶 为什么每个程序员都应该学习C语言? 每个程序员都应该学习C语言?我可不这么认为 C语言已经死了,5个需要忘却它的理由 用C设计 用C++编码 为什么使用C++ C++0x:崭新的C++,还是另一个Java? 编程语言的三大定理 动态语言为何难堪重任 动态语言面面观 [引自云风的博客]首先,给不熟悉我的朋友做一…
cgroup:control group-控制群组:将用户(的进程)加入某个群组(又叫控制器controller), 通过 指定群组对资源-cpu 内存 network等的使用,来限制用户对计算机资源的使用 类似于windows中的“ 资源配额” ?? 类似于很多软件中的“RBAC“ ,基于角色的访问控制?? 跟pam认证相比,cgroup更简单更集中更便于管理,符合unix的kiss原则 ----------------------借鉴老外的设计(系统)的思想 整个功能由libcgroup.x…