文档章节

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
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
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

go语言学习总结

一、描述 go语言是直接将源码编译成二进制机器码的语言;它支持面向对象、也支持函数式编程;支持并发很容易; 二、基本语法学习路径 https://studygolang.com/subject/2...

盼望明天
20分钟前
1
0
JSP 九大内置对象及其作用域

JSP 中一共预先定义了 9 个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception ,下面就简单介绍下。 1、request 对象 request 对象...

几个栗子
31分钟前
0
0
Java中的坑之方括号

Java中的坑之方括号 这一段时间,在做项目的时候,发现了一个坑,这个坑说大不大,说小不小,不知道的足够喝一壶,知道的就可以轻松解决。 问题描述 在做数据统计的时候,遇见了如下形式的数...

星汉
42分钟前
1
0
[雪峰磁针石博客]python机器学习、web开发等书籍汇总

Building Machine Learning Systems with Python Third Edition - 2018.pdf 下载地址 Get more from your data by creating practical machine learning systems with Python Key Features ......

python测试开发人工智能安全
53分钟前
1
0
文件的压缩与解压(linux)

Linux下*.tar.gz文件解压缩命令 1.压缩命令:   命令格式:tar -zcvf 压缩后文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 2.解压缩命令: ...

qimh
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部