Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx

1. 大原则:分解+命名1

1.1. 命名规范1

1.2. 分层、DI和AOP是继OO1

1.3. 运算符可读性一般要比函数好1

1.4. 函数式样 流程控制全部函数化2

1.5. 递归代替循环2

1.6. 中缀表达式  取代 前后缀表达式2

1.7. 有时候异常处理也会提升可读性2

1.8. dsl2

2. Refactor2

2.1. 方法链2

2.2. 其他2

2.3. PIE 原则:意图清楚而且表达明确地编程;3

2.4. 恰到好处的注释3

2.5. 简单就是美,避免简单的功能写出复杂的代码;4

2.6. 坚持操作方法的原子性,而后使用组合模式实现业务逻辑;4

2.7. 参考4

1. 大原则:分解+命名

1.1. 命名规范

参考知名api  参考知名sdk 游戏cocos2d、等..

Sql style api

这样可以大大减少资料文档的编撰。。互联网上已经有了

命名可以添加版本时间后缀,方便脚本语言重构

1.2. 分层、DI和AOP是继OO

1.3. 运算符可读性一般要比函数好

函数式语言同时具有良好的简单性和正交性

赋值

Assign(“var1”,22);

加法

Add(“var1”,”var2”);

1.4. 函数式样 流程控制全部函数化

特殊字(如while、class和for)

1.5. 递归代替循环

1.6. 中缀表达式  取代 前后缀表达式

1.7. 有时候异常处理也会提升可读性

异常处理

1.8. dsl

2. Refactor

2.1. 方法链

2.2. 其他

以下是摘选的可供参考的策略:

· 编码风格一致

· 代码清晰表达意图

· 写别人看得懂的单词,如果选用英语,那么避免日语、法语和汉语拼音等,尽量使用语义化的命名组合;

2.3. PIE 原则:意图清楚而且表达明确地编程;

· 能够让人快速看懂(最低限度的要求是自己一个月后能快速读懂);

2.4. 恰到好处的注释

· 不能太多或太少,注释的形式根据代码具体的情况有不同;

· 避免用注释包裹代码;

· 尽量留下简明扼要的注释;

· 评估取舍(不要编写大段的代码)

· 避免写一些现在不需要、将来也不太可能需要的功能:

· 不完美主义:不多写代码(如会话存储拆分);

· 避免做没有太大价值的优化工作;

· 区分任务的轻重缓急:

· 头疼医头也医脚:先容忍失败,再解决问题(如节点关闭逻辑);

· 不头疼不医头:量化分析(如参数调整回滚等);

· 综合考虑一下性能、便利性、生产力、成本和上市时间……

2.5. 简单就是美,避免简单的功能写出复杂的代码;

· 保持简单的代码远比写出复杂代码要难得多,但这是值得的;

· 不编写讨巧的代码;

· 避免无谓的条件嵌套和过度封装;

· 第一眼看上去就能知道其用处的代码,才是简单而美的代码

2.6. 坚持操作方法的原子性,而后使用组合模式实现业务逻辑;

· 避免大段代码,要写高内聚、低耦合的代码;

2.7. 使用德摩根定理 “分别取反,转换与/或”(

如果你学过“电路”或者“逻辑”课,你应该还记得德摩根定理。对于一个布尔表达式,有两种等价的写法:

1.         not (a or b or c) <=> (not a) and (not b) and (not c)

2.         not (a and b and c) <=> (not a) or (not b) or (not c)

如果你记不住这两条定理,一个简单的小结是“分别取反,转换与/或”(反向操作是“提出取反因子”)。

有时,你可以使用这些法则来让布尔表达式更具可读性。例如,如果你的代码是这样的:

if (!(file_exists && !is_rotected)) Error("Sorry, could not read file.");

那么可以把它改写成:

if (!file_exists || is_protected) Error("Sorry, could not read file.");

2.8. 代码难以跟踪

阅读代码时,通常需要频繁的从一个函数或类跳转到另一个函数或类。 掌握你使用的集成开发环境(IDE),可以节约很多阅读时间。 通过使用集成开发环境(例如Visual Studio)的“跳转至声明”,“查找使用”,“导航至”,“检查”等特性,你可以将整个代码看作是一幅连通图。

在Notepad中编写代码是不错的选择,但是如果你想有效的阅读代码,必须掌握一个集成开发环境。

那么,究竟什么是连通图呢?

连通图是在拓扑空间中连接的图,即图中任意两点之间都有一条通路。(来源)

换句话来说,在“连通”代码中,你可以方便的从一个方法中跟踪到另一个方法中,并在你头脑中建立这段代码的功能框架。

如果代码中某一部分链接被破坏(在这种情况下,集成开发环境不能帮助你实现函数间的跳转),通常你必须花一些时间自己查找链接。代码中被破坏的链部分越多,越难以跟踪,代码也就越难以阅读。

那么,为什么代码图会被断开?原因是多方面的,下面将列出一些常见情况:

2.8.1.1. 1. 使用字符串引用方法和属性

一些框架就喜欢这样做,他们将”回调”作为字符串传递并在需要时使用反射。 此时你需要使用CMD+F查找。

最可恶的是动态语言中的动态字符串…… 对这个问题,向JavaScript或AS3致敬!

2.8.1.2. 2. 代码被分割成互不相连的部分

例如,你的代码一半使用C#编写,另一半是在可视化节点编辑器生成。 在这两者之间跳转非常不易。

依赖注入框架和其他XML配置工具也是。虽然没有明确说明,但编写XML配置文件也属于编程。 这就是所谓的的声明式编程(更不用说那些构建基于XML命令式语言的疯狂的人)。

2.8.1.3. 3. 巨大的图节点

20个链接跳转到这个包含1000行代码的函数?。。哎哟。 你不需要包含这种节点的图。

2.8.1.4. 4. 一切都过于抽象

通过跳转至声明,你可到达一个接口或者一个抽象类,必须弄清楚有哪些实现。 依赖注入,抽象工厂和其他所有反对依赖的方法使得这一切变得更糟。 代码图中节点间的联系过于抽象。

这样说来,我讨厌依赖注入(DI)和扩展标识语言(XML)。但DI是一个很棒的工具,它可以让你避免书写面条式代码并让程序的架构更加模块化,更具可测试性。但像其他好的事物一样,过度依赖必然产生负面效果。

我曾在审查一个应用程序时感到完全气馁,因为我意识到自己弄不明白程序从何处开始。。。例如它的入口点在哪。 这一切都是在程序开始时从XML配置工具自动生成。

但我确实讨厌XML配置工具。

2.9. 参考

Atitit.提升语言可读性原理与实践

Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范

如何提高代码可读性、可维护性.html

提高代码可读性的 10 个注释技巧 - 文章 - 伯乐在线.html

编写可读性代码的艺术 - tiewen的专栏 - 博客频道 - CSDN.NET.html

程序员,请优先提高代码的可读性 - 文章 - 伯乐在线.html

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

,Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

奶牛科技cto ,uke 首席cto

uke波利尼西亚区大区连锁负责人,克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke汤加王国区域负责人。布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

Uke软件标准化协会理事长理事长 uke终身教育学校副校长

Uke 数据库与存储标准化协会副会长 uke出版社编辑总编

Uke医院方面的创始人

转载请注明来源:attilax的专栏  ?http://www.cnblogs.com/attilax/

--Atiend

Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx的更多相关文章

  1. Atitit.提升语言可读性原理与实践

    Atitit.提升语言可读性原理与实践 表1-1  语言评价标准和影响它们的语言特性1 1.3.1.2  正交性2 1.3.2.2  对抽象的支持3 1.3.2.3  表达性3 .6  语言设计中的权 ...

  2. atitit.提升软件开发的效率and 质量的那些强大概念and方法总结

    atitit.提升软件开发的效率and 质量的那些强大概念and方法总结 1. 主流编程中三个最糟糕的问题 1 1.1. 从理解问题后到实现的时间很长 1 1.2. 理解和维护代码  2 1.3. 学 ...

  3. Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725

    Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓  O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL ...

  4. Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结

    Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide ...

  5. Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx

    Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档   paip.js翻页分页pageing组件.txt1 ...

  6. Atitit 提升进度的大原则与方法  高层方法  attilax总结

    Atitit 提升进度的大原则与方法  高层方法  attilax总结 生产力的提升点 1.1. 管理,管理的发展发展非常缓慢,1 1.2. 方法论(前后分离,dsl等)1 1.3. 工具( 工具链 ...

  7. Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准

    Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准 1. 界面gui方面的前后端分离重大意义1 2. 业务逻辑也适当的迁移js化1 3. 常用分离方法2 3.1. 页面 ...

  8. atitit.提升研发效率的利器---重型框架与类库的区别与设计原则

    atitit.提升研发效率的利器---重型框架与类库的区别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1 ...

  9. Atitit.js this错误指向window的解决方案

    Atitit.js this错误指向window的解决方案 1.1. 出现地点and解决之道1 1.2. call,apply和bind这三个方法2 1.2.1. Function.prototype ...

随机推荐

  1. Java8实战分享

    虽然很多人已经使用了JDK8,看到不少代码,貌似大家对于Java语言or SDK的使用看起来还是停留在7甚至6. Java8在流式 or 链式处理,并发 or 并行方面增强了很多,函数式的风格使代码可 ...

  2. Dapper扩展之~~~Dapper.Contrib

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html#skill 上一篇文章:Dapper逆天入门~强类型,动态类型 ...

  3. 直播推流端弱网优化策略 | 直播 SDK 性能优化实践

    弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...

  4. 14门Linux课程,打通你Linux的任督二脉!

    Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...

  5. Win7安装MySQL-5.7.16过程

    1.在C盘新建MYSQL文件夹:2.将mysql-5.7.16-winx64拷贝到C:\MYSQL文件夹下,更名为mysql-5.7.16:3.在mysql-5.7.16目录下,建my.ini文件,内 ...

  6. appium+robotframework环境搭建

    appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...

  7. IM 去中心化概念模型与架构设计

    今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的. 站在这个角度而言,实际上并非所有的业务都能做去中 ...

  8. Ubuntu(Linux) + mono + xsp4 + nginx +asp.net MVC3 部署

    折腾了一下,尝试用Linux,部署mvc3. 分别用过 centos 和 ubuntu ,用ubuntu是比较容易部署的. 操作步骤如下: 一.终端分别如下操作 sudo su ->输入密码 a ...

  9. 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)

    在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...

  10. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...