代码的马斯洛金字塔理论

article/2025/10/6 14:38:01

马斯洛曾提出了著名的需求层次理论(马斯洛需求金字塔理论):

人们需要动力实现某些需要,其中的一些需求优先于其他需求。我们可以把人类的需求划分为五个层次(如图1所示),从层次结构的底部往上,需求分别为:

生理(食物、衣服),安全(工作保障),社交需要(友谊),尊重和自我实现。前四个级别通常称为缺陷需求,而最高级别称为增长需求。

图1. 马斯洛需求金字塔

资深工程师 Charles-Axel Dein 总结了代码评审 (code reivew) 时存在着类似的层次理论。他把代码的质量同样分为五个层级:

  1. Correct(正确)
    1. 代码能否按照预期的方式运行?
    2. 它能否处理边界情况?
    3. 是否经过充分地测试,从而保证其他工程师对其修改也能保证正确性?
    4. 是否满足了当前使用场景的性能需求?
  2. Secure(安全)
    1. 代码是否存在漏洞?
    2. 数据存储是否安全?
    3. 个人识别信息是否得到了正确地处理?
    4. 代码是否可能诱发DOS(攻击)?
    5. 输入验证是否全面?
  3. Readable(可读)
    1. 代码是否易于阅读和理解?
    2. 是否明确了业务需求(例如代码到底是写给人看的,还是写给及其用于执行的)?
    3. 测试是否足够简洁?
    4. 变量,函数和类的命名是否恰当?
    5. 使用的领域模型能否清晰地映射到现实世界来减少认知障碍?
    6. 是否在编程时采用了一致的代码约定?
  4. Elegant(优雅)
    1. 代码是否使用了众所周知的模式?
    2. 他能否在不牺牲简单性和简洁性的同时实现所需的功能?
    3. 你会为编写该代码感到兴奋吗?
    4. 你会为改代码感到自豪吗?
  5. Altruist(利他)
    1. 他人能否从代码中学到更多东西?
    2. 能否激励其他工程师对它改进?
    3. 它会清理未使用的部分代码,改善配套文档,通过小规模的重构来引入更好的模式吗?

http://chatgpt.dhexx.cn/article/CnSyEQSa.shtml

相关文章

从特岗教师的需求金字塔,重新理解乡村、教育和科技

教师节刚刚过去,尊师重道,可以说是中国文化中亘古不变的话题。 尤其是在乡村振兴、农村现代化的过程中,都离不开乡村教育发展,而诸多特岗教师、乡村教师,更是被寄予厚望的奉献者,是放弃城市繁华的苦行僧&am…

马斯洛需求层次理论

马斯洛人类需求金字塔理论把需求分成 生理需求、 安全需求、 社交需求、 尊重需求和 自我实现需求 五大类,依次由低层次到高层次,如下图。

马斯诺需求金字塔

美国著名心理学家马斯洛对人的需要进行了系统的、独到的研究,对心理学和行为科学产生了巨大的影响。把人的需要描述成具有五个层次的“金字塔”,已满足的需要达到了什么层次,与人的心理健康程度是有关联的。人的基本需要按优势或力量的强弱排…

金字塔原理

当你在听别人讲话或者看文章时,会时不时用某种逻辑模式,试图把接收到的内容组织起来,让自己理解更加深刻。这种逻辑最优化的选择就是金字塔原理,因为金字塔原理指导下的金字塔结构符合人类的思维模式。 那人类的用脑机制是怎样的呢…

马斯洛人类需求金字塔理论

马斯洛人类需求金字塔理论把需求分成生理需求、安全需求、社交需求、尊重需求和自我实现需求五类,依次由较低层次到较高层次。

Xavier(6):ubuntu18.04安装casadi 报错与解决(recompile with -fPIC)

报错: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol N_VClone_Serial which may bind externally can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: ../../../lib/libcasadi_sundials.a(nvector_serial.c.o): relocati…

编译FCL库报错:recompile with -fPIC

报错如下: Make error relocation R_X86_64_32 against .text’ can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libccd.a: error adding symbols: Bad value 仔细看一下, 可以发现, 是因为之前安装另一个库引起的, libccd, 因为FCL需要调…

Matlab2019b.Warning: The CUDA driver must recompile the GPU librariesbecause your device is more

项目场景: 内容报错: Warning: The CUDA driver must recompile the GPU librariesbecause your device is more recent than the libraries. Recompiling can take several minutes. 使用环境:1. Matlab2019b 2.系统Win11,Win1…

cmake报错:xxx can not be used when making a shared object; recompile with -fPIC

一、问题描述 最近在cmake一个项目时,链接库时报错,如下图: 通过报错信息看出,需要加上编译选项-fPIC,定位到ntl库。猜测是在编译ntl库时出错。 二、解决方案 ntl库的文件结构如下: 进入src目录下&…

【ffmpeg编译问题】recompile with -fPIC /usr/bin/ld: 最后的链结失败: 错误的值

安装流程参考 最新版本ffmpeg6.0源码安装vscode开发环境搭建! 1、配置 下好ffmpeg后,设置配置 sudo ./configure --prefix/usr/local/ffmpeg --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-libx264 --…

idea jrebel recompile总是编译整个项目问题处理(如何快速编译)

问题:idea里面安装了jrebel,布置好热部署之后,每次recompile单个java文件或者前端文件时总是会编译整个项目,每次recompile非常的慢。这里的情况是gradle下的项目,下面是解决方式(亲测mac,windows有效)1:设…

BLESS的安装---一个问题recompile with -fPIC的解决

BLESS安装方法 首先新建一个目录 mkdir bless_c cd bless_c然后把源码克隆到本地 git clone https://github.com/thirtyeggs/bless.git进入目录,执行编译 cd bless make -j8编译报错 mpicxx kmc/kmc_api/kmc_file.o kmc/kmc_api/kmer_api.o kmc/kmc_api/mmer.o murmurhash…

gcc报错 can not be used when making a shared object; recompile with -fPIC

问题1:gcc报错 can not be used when making a shared object; recompile with -fPIC -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,全…

WRF——hdf编译报错 recompile with -fPIC

错误: 解决办法:重新编译zlib relocation R_X86_64_32 against .rodata can not be used when making a shared object; recompile with -fPIC 解决方案:以64位的方式重新编译zlib cd zlib CFLAGS"-fPIC" ./configure make …

mysql 存储过程 compile_SQLSERVER临时表导致存储过程重编译(recompile)的一些探讨_MySQL...

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile)。那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译…

mysql 存储过程 compile_SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨_MySQL...

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile)。那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译…

Qt recompile with -fPIC

Qt编译时提示: relocation R_X86_64_32 against ‘.rodata’ can not be used when making a PIE object: recompile with fPIC 于是百度, 找了很久找到一篇能够解决我这问题的帖子 在这里面的参考文档中提到,从Ubuntu16.10版本开始默认启用P…

IDEA安装JRebel实现热部署,自动reload和recompile

利用JRebel插件实现代码及时编译功能,帮助我们在开发过程中节省项目重启时间,提高开发效率。JRebel插件实现及时编译,帮助我们在开发过程中节省项目重启时间,提高开发效率。 一、安装 插件安装流程: 1.下载安装JRebel插…

WITH RECOMPILE和OPTION(RECOMPILE)区别

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等),  一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译。  之前了解的比较…

内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2

系列文章 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2 上一篇 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2 在上一篇介绍里,我们在群晖系统中成功安装了图形化界面的cpolar&#…