重温《Unix设计哲学》

news/2024/7/7 19:47:01

重温Unix设计哲学

这个世界是复杂的,但往往本质的东西都是简单的。这些原则,不光是用在程序开发,也适用于架构设计,产品设计等等地方。

  1. 简洁原则:以简洁为美

    不要为了满足自己的虚荣心,企图搞一些花哨的东西。而是要:以简洁为美,总是设法将程序系统分解为几个能够协作的小部分,并本能地抵制任何用过多噱头来粉饰程序的企图。这就有点 Unix文化的意味了。

  2. 吝啬原则:除非确无它法,不要编写庞大的程序
    “大”有两重含义:体积大,复杂程度高。程序大了,维护起来就困难,项目就越容易失败。

  3. 透明性原则:设计要可见,以便审查和调试

    软件系统的透明性是指:你一眼就能够看出软件是在做什么,以及怎样做的。显见性指:程序带有监视和显示内部状态的功能,这样程序不仅能够运行良好,而且还可以看得出它以何种方式运行。

  4. 模块原则:使用简洁的接口拼合简单的部件

    要编制复杂软件而又不至于一败涂地的唯一方法就是:降低其整体复杂度。也就是:用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。

  5. 分离原则:策略同机制分离,接口同引擎分离

    这里所谓的机制:比如后台服务根据某个业务逻辑,计算后输出数据。而策略,就是如何使用这些数据。

  6. 表示原则:优先用数据(数据结构)来表示知识,而不是用代码

    更进一步:在设计中,主动将代码的复杂度转移到数据中去。比如:用数组初始化器来表示转换表,而不是switch;用指针数来表示逻辑关系,而不是用50行代码的流程图来实现。

  7. 沉默原则:如果一个程序没什么好说的,就保持沉默

    只输出用户关注的信息,而不是什么信息都打印。

    设计良好的程序将用户的注意力视为有限的宝贵资源,只有在必要时才要求使用。

  8. 优化原则:雕琢前先得有原型,跑之前先学会走

    先实现功能,让软件运行起来,再对局部进行进一步优化。


http://lihuaxi.xjx100.cn/news/1805030.html

相关文章

使用VC++设计程序,进行全局固定阈值分割、自适应阈值分割

图像分割 获取源工程可访问gitee可在此工程的基础上进行学习。 文章目录 图像分割实验内容一、全局固定阈值分割全局固定阈值分割的原理全局固定阈值分割的实验代码全局固定阈值分割的实验现象 二、自适应阈值分割自适应阈值分割的实验原理自适应阈值分割的实验代码自适应阈值…

C++20并发编程之线程闩(std::latch)和线程卡(std::barrier)

std::latch std::latch类是一种基于std::ptrdiff_t类型的倒计数器,可用于同步线程。计数器的值在创建时进行初始化。线程可以在 latch 上阻塞,直到计数器减少到零为止。无法增加或重置计数器,这使得 latch 成为一次性的屏障。 std::latch的成…

产品经理必备技能:如何快速锁定种子用户群体?

大家好,我是小米,一名热爱技术、热衷分享的90后小青年。今天我们要探讨的话题是一个在产品经理面试中经常被问到的问题:“产品上线后的种子用户该如何获取?”作为一个热爱挑战、乐于探讨的小伙伴,我将和大家分享一些我…

2023NOIP游寄

停课停了一个月,考炸了就真的寄了。 DAY -2 模拟赛出人意外的简单,信心赛吗? 开局30s切了T1。总共做出三题,但挂了 150pts。难绷。 直接没有信心了。 DAY -1 晚上直接跑路回家,表示:休息一天。 DAY …

Java项目实战《苍穹外卖》 二、项目搭建

当我痛苦地站在你的面前 你不能说我一无所有 你不能说我两手空空 系列文章目录 苍穹外卖是黑马程序员2023年的Java实战项目,作为业余练手用,需要源码或者课程的可以找我,无偿分享 Java项目实战《苍穹外卖》 一、项目概述Java项目实战《苍穹外…

从零开始写一个APM监控程序(一)协议

APM(Application Performance Monitoring)是一种用于监控和管理应用程序性能的解决方案。它通过收集、分析和报告应用程序的性能数据,帮助开发人员和系统管理员更好地了解应用程序的运行状况,识别潜在的性能问题,并进行…

Qt给状态栏添加一个按钮

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QPushButton* btn new QPushButton(this);btn->setText("click");this->statusBar()->addWidget(btn); }

C/C++ 运用WMI接口查询系统信息

Windows Management Instrumentation(WMI)是一种用于管理和监视Windows操作系统的框架。它为开发人员、系统管理员和自动化工具提供了一种标准的接口,通过这个接口,可以获取有关计算机系统硬件、操作系统和应用程序的信息&#xf…