文档章节

宁可写能写代码的代码,也不要写代码

沙枣
 沙枣
发布于 07/04 17:25
字数 549
阅读 0
收藏 0

把代码看成一种文本,解析这个文本,生成数据结构,然后重新计算遍历,统计,生成新的代码,就是代码生成。

随着业务的扩展,需求的增加,代码量的扩张是不可避免的。为了能不断满足新的需求,就要不断用新的抽象降低项目的复杂程度,以便能让普通程序员进行维护。

总的来说,新的功能是旧的功能的叠加和演化:如果旧功能是函数,那么新的功能就是利用这些函数,生成新的函数。所以有人说:项目的扩展,就是在写一个 Lisp 语言的解释器。

只有将代码当成文本处理,才能让用代码描述的项目成为可以任意扩展的东西,否则,利用代码语言本身的各种模式,很难能大幅度降低项目的复杂程度。

所以,不断用新的语言,描述项目的需求,是保持项目扩展的最好途径。

那么,普通项目如何成为一个语言解释器呢?答案是不断设计代码生成器,用更抽象的描述,保持项目的可维护性。

代码作为软件企业的资产,有特定的运行环境,特定的应用场景,当有新的需求,新的环境,代码的可用性会大打折扣,因为运行的环境可能不同,版本可能会发生变化,这个问题怎么解决呢?

就是把代码标准化,让代码尽可能和语言无关,尽可能和环境无关,只是单纯的算法,这样在不同的语言环境中就可以增加可重用性。

© 著作权归作者所有

沙枣
粉丝 23
博文 103
码字总数 72499
作品 0
深圳
后端工程师
私信 提问
听说程序员是酱紫滴,你中招了吗?

不管程序员性格是外向的还是内向的,是多话的还是沉默寡言的,他们或多或少都有如下的怪癖,区别只在于怪癖的严重程度。 1. 别人写的代码总是比自己差,我情愿重写也不要用别人 这个现象不用...

机智如我哇
2016/03/22
474
0
对算法和分支的一点点体会

早年因为为证券和银行做接口, 需要做一些数据转换,来实现对接交易. 根源是因为双方业务模式不同,各自需要的信息也不同. 宏哥因为"聪明",就设计了一个算法, 来通过配置文件,实现不同银行和不同...

宏哥
2012/07/09
954
19
Android产品性能优化有感

今天与Android开发组长聊了如何做好性能优化,发现情况是绕开不干或傻干,因此谈了以下几点,欢迎泼水。 不要先入为主,认为没法优化; 不要先去优化,而要评测; 最好使用自动工具,手工打日...

云贵高原
2014/02/26
413
0
多快好省地建设代码主义

文章转载自「开发者圆桌」一个10年老猿原创文章传播开发经验,尤其适合初学者或刚入职场前几年程序猿的微信公众号。 我播种,所以我收获。我深深地懂得“一份耕耘,一分收获”的道理。所以,...

开发者圆桌
2017/05/08
0
0
程序员懵逼时刻:几个月后,之前自己写的代码也看不懂了?

程序员们大多都会有过这样的经历,就是要看别人写的代码。比如说公司有同事离职了,他的业务就需要有其它的小伙伴们给接下来继续维护。 这对好多程序员来说是一种折磨,边看边骂,这写的是什...

我最喜欢三大框架
05/30
15
0

没有更多内容

加载失败,请刷新页面

加载更多

使用CSS自定义属性构建骨架屏

写在前面 几天前看到薄荷前端团队分享的《前端骨架屏方案小结》,突然回想起一年前看到的max bock写的《Building Skeleton Screens with CSS Custom Properties》,翻译整理写下出此文,分享...

前端老手
昨天
5
0
Docker常用命令小记

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,还有一些命令及参数也很重要,在此记录下来避免遗忘。 ......

程序员欣宸
昨天
5
0
MAT使用-jvm内存溢出问题分析定位

1.MAT简介: MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,...

xiaomin0322
昨天
5
0
内网和外网之间的通信(端口映射原理)

首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的...

Jack088
昨天
6
0
3.深入jvm内核-原理、诊断与优化-4. GC算法和种类

一、GC算法和种类 GC的概念 GC算法 引用计数法 标记清除 标记压缩 复制算法 可触及性 Stop-The-World GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法 通过引用计算来回收垃圾 使用者...

hexiaoming123
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部