文档章节

how to write excellent code

-鹏
 -鹏
发布于 2017/07/31 19:49
字数 1074
阅读 11
收藏 0
点赞 0
评论 0

    Writting excellent code is really a tough thing. Theres is no shortcut and it's also impossible to say that if you follow the rules listed blow and then you could write such good code. But I discover some clues to achieve that superior level.

    

了解语言的本质,知道各种语言的适用场景。


三流的人懂框架
二流的人懂开发
一流的人懂原理

我们知道不同的语言所处理的事是不一样的,换句话说不同的语言有着各自的优势。 如果了解语言的本质,并且具有跨语言的能力,即语言不是你的障碍的时候,或许你可以说 “我做到了”。

 

举个例子:

    我们做一个项目,需要本地开发环境支持source map调试,同时本地需要支持mock数据(本地mock 和服务器mock两种),测试,UAT 和生产都需要请求不同的服务器。 如何实现上述的功能呢?

    如果你具备跨领域知识的时候,你会发现根据环境请求不同的接口根本不是我们考虑的,换句话说这是应该运维人员(也可以是充当运维角色的人)去配置才是合理的。 本地开发环境source map,同时支持mock,mock还是分两种的。其实这种最理解的解决方案是通过注入环境变量,这样除了开发环境都不会收到开发需求的影响。 

    类似的例子很多,比如我要做一个美图应用,应该用什么语言,我想做一个高并发的存储型的应用,做CPU密集型如何处理,我想收集用户数据,我想分析数据,我想展现用户的数据怎么做。这需要你对各个语言领域都有所了解,才可以作出稍微正确的解决方案。

 

 

好的代码拥抱变化

世界唯一不变的就是变化。

 将开放的通过配置集中起来,函数因子通常是不能修改的。也就是说代码虽然是拥抱变化的,但是函数因子却不可以拥抱变化(他比较害羞)

这就需要我们能够识别需求,转化需求。  要知道我们的系统是暴漏在外界充满欺骗的环境。要想你的代码安安稳稳, 就必须要一些干脏活累活的人。  如何界定系统边界,将脏活累活干干静静地甩出去,交给一个地方管理是非常重要的。 我们的精力是有限的,如果需求一变,你的代码也大变样,试问,你受得了吗?测试受得了吗? 你的代码受得了吗?

识别系统不变量,可变量。隔离系统依赖,合理组织代码结构,每次修改需求,只是修改系统边界代码和新添加模块, 这是杰出代码的特征。

精通数据结构

能够轻松识别项目中的O(n2)甚至更多复杂度的代码。能够在恰当时候使用正确的数据结构。有时候仅仅是数据结构改变下,代码实现就会很简单。有时候仅仅是数据结构改变下,性能会有很大提升。其实无非就是空间换时间,在可接受范围内尽可能提升性能减少时间。 前端这个行业其实也需要精通数据结构和算法,这就像所有的软件开发都会学计算机原理一样,有时候知道底层原理可以帮助你理解。更何况随着计算机的发展,现在好多应用越来越倾向于将计算放在前端,我之前的一个项目前端计算就比较密集。

参考:  《the progmatic programmer: from journeyman to master》32节: 算法效率

© 著作权归作者所有

共有 人打赏支持
-鹏
粉丝 20
博文 142
码字总数 91363
作品 0
杭州
前端工程师
List of Useful jQuery Plugins

I viewed each of the jQuery plugins in the jQuery plugins repository. I couldn't believe how many there were! So I decided to make this master list to weed out any plugins that ......

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Keycloak 2.2.0.Final 发布,SSO 集成解决方案

Keycloak 2.2.0.Final 发布了,Keycloak 是一个为浏览器和 RESTful Web 服务提供 SSO 的集成。基于 OAuth 2.0 和 JSON WebToken(JWT) 规范。最开始是面向 JBoss 和 Wildfly 通讯,但已经计划...

王练 ⋅ 2016/09/16 ⋅ 0

JavaScript Chart的使用

Introduction Wouldn't it be nice to be able to add a stylish and colorful chart to your Web page with minimal effort and still avoid slow-loading Java applets or server side gen......

zh119893 ⋅ 2013/12/09 ⋅ 0

8 Python Frameworks For Web Developers

Python has become immensely popular inthe modern IT world. The language is most popular for its efficiency. Itis also known as the best beginner’s learning language. The primer......

linjine ⋅ 2015/05/03 ⋅ 1

Let’s discuss MVVM for iOS

Some say that as you progress as a software developer you undergo specific stages - First, you’re glad you’ve made contribution to the code. You go around telling people that......

hejunbinlan ⋅ 2016/01/13 ⋅ 0

Go Object Oriented Design

Go hastypes and valuesrather than classes and objects. So can a language without classes or objects be object-oriented? While Go may not fit the typical mold of an OOP language,......

Jerikc ⋅ 2014/11/06 ⋅ 0

PyDev of the Week: Anthony Tuininga

This week we welcome Anthony Tuininga as our PyDev of the Week! Anthony is the creator of the cx_Freeze library among several others in the cx Suite. You can get a feel for what......

Mike Driscoll ⋅ 2017/12/12 ⋅ 0

Top 10 Websites for Advanced Level Java Developers

Stackoverflow Stackoverflow.com is probably the most popular website in the programming world. There are millions of good questions and answers. Learning an API or a programming......

perfectspr ⋅ 2014/12/11 ⋅ 0

net开源项目

1 以色列 特思开源软件 http://cn.tersus.com/#Id=3924 2 开源社区 http://www.ctochina.net/ .NET开源项目链接 http://www.cnblogs.com/dustinyang/articles/361479.html...

冰点沐雪 ⋅ 2012/07/22 ⋅ 0

Links of Mac OS X support websites

Links of Mac OS X support websites Web Site Content CodeSnippetsStars: XXXXX AccelerateYourMac® Snippets is a public source code repository. Easily build up your personal colle......

junwong ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 昨天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 昨天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 昨天 ⋅ 0

聊聊spring cloud gateway的RedisRateLimiter

序 本文主要研究下spring cloud gateway的RedisRateLimiter GatewayRedisAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/gateway/con......

go4it ⋅ 昨天 ⋅ 0

169. Majority Element - LeetCode

Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排序,次数超过n/2的元素必然在中...

yysue ⋅ 昨天 ⋅ 0

NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

派派菠菜 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部