旧闻系列-Unix编程哲学

写在前面

这应该是大学期间读的第一本操作系统方面的书,刚开始接触编程时觉得搞操作系统才是最牛X的,所以和同学一起去图书馆找书,出来各种Windows操作图书,就找到一般Unix编程哲学感觉可以作为小说看看。

Unix编程哲学

关于Unix编程哲学相信大家或多或少多个角度都了解或听到过一些。

比如Kiss:keep it simple, stupid

"简单原则"----尽量用简单的方法解决问题----是"Unix哲学"的根本原则,也是被更多人认可的,以至于在设计模式这种微观角度或者应用架构涉及这种宏观角度,Kiss依然是最被遵守和依赖的原则,比如面对复杂应用场景设计而采用的DDD模式,根本上也是通过结构分割和再组织实现的kiss的目的。

遵守Kiss的好处是:

  1. 清晰原则。

代码要写得尽量清晰,避免晦涩难懂。清晰的代码不容易崩溃,而且容易理解和维护。重视注释。不为了性能的一丁点提升,而大幅增加技术的复杂性,因为复杂的技术会使得日后的阅读和维护更加艰难。

  1. 模块原则。

每个程序只做一件事,不要试图在单个程序中完成多个任务。在程序的内部,面向用户的界面(前端)应该与运算机制(后端)分离,因为前端的变化往往快于后端。

  1. 组合原则。

不同的程序之间通过接口相连。接口之间用文本格式进行通信,因为文本格式是最容易处理、最通用的格式。这就意味着尽量不要使用二进制数据进行通信,不要把二进制内容作为输出和输入。

  1. 优化原则。

在功能实现之前,不要考虑对它优化。最重要的是让一切先能够运行,其次才是效率。"先求运行,再求正确,最后求快。"(Make it run, then make it right, then make it fast.)90%的功能现在能实现,比100%的功能永远实现不了强。先做出原型,然后找出哪些功能不必实现,那些不用写的代码显然无需优化。目前,最强大的优化工具恐怕是Delete键。


本文分享自微信公众号 - 春哥叨叨(chungedaodao)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏solate 杂货铺

go time Format 格式化时间的使用

Go 里的定时器相关的函数有 time.After,time.AfterFunc,time.Tick 等

53520
来自专栏测试游记

python 读取音频文件的详细信息

有一项测试的需求是判断录像是否和预期一致,检查项是:分辨率、录像时长等内容 刚开始考虑使用os模块直接获取文件的详细信息

37130
来自专栏终身幼稚园

常见的全局ID生成方案

在分布式系统架构中,经常都需要一个全局的ID生成器,来保证系统中某些业务场景中对于主键的要求,当前实现ID生成的方式还是挺多的。本文我们来谈谈常见的ID生成方式...

23020
来自专栏枕边书

性能调优工具-火焰图

工具的进化一直是人类生产力进步的标志,合理使用工具能大大提高我们的工作效率,遇到问题时,合理使用工具更能加快问题排查的进度。这也是我为什么非常喜欢 shell ...

45220
来自专栏爱编码

Java的重入锁ReentrantLock

ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该...

10630
来自专栏浪子编程走四方

Linux学习命令汇总二——Linux文件系统,日期时间和文件目录管理

#ls -l /root 显示/root 列表长选项 ,(各项参数含义如下)

11230
来自专栏测试驿栈

jmeter_遍历转换浮点时间戳

14040
来自专栏git

linux`操作文本的三大利器

awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也...

18220
来自专栏鲜枣课堂

对于通信专业大学生来说,哪些专业基础能力是必备的?

对于一个通信专业大学生来说,究竟哪些专业基础能力是必备的?进入通信行业之后,究竟哪些知识更具有实用性价值,有利于工作效率的提升?大学期间不知道该学什么的时候,应...

10120
来自专栏爱编码

Java的ReentrantReadWriteLock

现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取...

9120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励