文档章节

how to write excellent code

-鹏
 -鹏
发布于 2017/07/31 19:49
字数 1074
阅读 11
收藏 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
博文 155
码字总数 92388
作品 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
792
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
259
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
0
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
13
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
187
1

没有更多内容

加载失败,请刷新页面

加载更多

线性一致性和 Raft

作者:沈泰宁 在讨论分布式系统时,共识算法(Consensus algorithm)和一致性(Consistency)通常是讨论热点,两者的联系很微妙,很容易搞混。一些常见的误解:使用了 Raft [0] 或者 paxos ...

TiDB
13分钟前
0
0
兄弟连区块链教程以太坊源码分析core-state-process源码分析

## StateTransition状态转换模型 /* The State Transitioning Model 状态转换模型 A state transition is a change made when a transaction is applied to the cu......

兄弟连区块链入门教程
15分钟前
0
0
linear-gradient渐变中的参数

在看张鑫旭的博客 遇到渐变数值后面带参数不太理解 @supports (-webkit-mask: none) or (mask: none) { .box { border: none; background: linear-gradient(to bottom, #34538...

红羊在厦门
16分钟前
0
0
Python yagmail模块自动发邮件

Python发邮件yagmail模块 import yagmail#连接服务器yag=yagmail.SMTP('xx@163.com','yy','smtp.163.com')#邮箱正文contents=["test","email send"]#发送邮件#yag.send('...

小白兔_球球
17分钟前
1
0
pada mysql

CREATE SCHEMA `exchange` DEFAULT CHARACTER SET utf8mb4 ;

qwfys
26分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部