程序员超强大脑——提高命名的质量(二)

哪些类型的标识符更容易理解

  1. 使用完整的单词似乎是一个合理的选择。
  2. 虽然单词构成的标识符便于理解,但较长的标识符也可能产生负面影响。
  3. 设计高质量的标识符是需要仔细衡量单词的清晰性与缩写的简洁性:注意单词的清晰性便于代码阅读者理解程序和排查错误;注重缩写的简洁性则便于代码阅读者记忆标识符。
  4. 单字母通常用作变量。程序员应该要明白一个道理,那就是不要想当然地认为其他人会明白自己做出的假设。有些程序员或许认为,某个字母肯定能传递出某种类型的信息,代码阅读者一望便知,但是除少数情况外,这种想法并没有理论依据。因此,为便于今后理解代码,采用单词来设计标识符或遵循命名约定是更好的选择。

低质量的标识符会引发更多代码错误

运用Feitelson设计的三步模型来提高标识符质量。

  1. 选择标识符要体现的概念。
    这一步具有极强的领域待定性,思考标识符包含哪些概念也许是命名中最重要的决定。
    Feitelson认为,在选择标识符所包含的内容时,应该重点考虑标识符的目的,即标识符能否体现出对象的信息及其用途。

  2. 挑选代表每个概念的单词。
    找到合适的单词通常并不难,显然应该选择一个在代码领域或整个代码库中使用特定单词。
    为提高命名的一致性,可以考虑建立项目词库,把所有重要的定义记录在案,并给出同义词的替换词。

  3. 根据这些单词设计标识。
    本质上是选择一个名称模具(名称模具旨在描述各个元素组合成变量名的典型方式)。
    代码库保持一致不仅便于其他人查找标识符包含的重要元素,也有助于在该标识符与其他标识符之间建立联系。此外,Feitelson建议所选模具应符合定义变量的自然语言。比如程序员可能更愿意使用是 max_points 而不是 points_max。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

粒子群算法优化ELMAN神经网络的分类预测,pso-elman

目录 背影 ELMAN神经网络的原理 ELMAN神经网络的定义 受限玻尔兹曼机(RBM) 灰狼算法原理 灰狼算法优化elman神经网络回归分析 基本结构 主要参数 数据 MATALB代码 结果图 展望 完整代码下载:粒子群算法优化ELMAN神经网络的分类预测资源-CSDN文库 https://download.csdn.net…

2024护网面试题精选(一)

0x00.基础漏洞篇 00-TOP10漏洞 1.SQL注入 2.失效的身份认证和会话管理 3.跨站脚本攻击XSS 4.直接引用不安全的对象 5.安全配置错误 6.敏感信息泄露 7.缺少功能级的访问控制 8.跨站请求伪造CSRF 9.实验含有已知漏洞的组件 10.未验证的重定向和转发 01-SQL注入漏洞 …

java多线程 简简单单的学它

java多线程 什么是线程 通俗的讲,就是一个软件里相互独立,同时运行的功能。比如我们打开B站,看视频时,我们会看到画面,听到声音,闪过的弹幕,这些都可以看作是一个线程。 在理解线程前&#x…

【Java_JSON】如何从JSON数据中提取value值

如何从JSON数据中提取value值? 首先将JSON数据转成字符串 创建JSONObject 对象 通过kv键值对的特性 使用key值来获取value 值 并输出 结果:

c++中锁定数据出现读写错误的例子

2010-4 程序出现了问题,引出了数据逻辑问题。 下面两个函数GetNextDataIndexW();和SetNextDataIndexW分别锁定, 导致了可能两个线程通过了GetNextDataIndexW();但是在SetNextDataIndexW出现数据写入错误。 这是一个典型的数据同步错误,也是…

mysql 中的一些重要函数

show create table user_profile 查看表结构 1.datediff(end_date,start_date)函数,now(), curdate() curtime() date_add(日期,interval num 时间) date_format(日期,格式) 4.select IFNULL(null,0); oracle 中nvl 函数 5.select IF(2 > 1, 2,0)&#xff…

c++: 缺省参数/默认参数的详解及其应用

c缺省参数/默认参数的详解及其应用 缺省参数是什么 #include<iostream> using namespace std;void func(int a 666) {cout << "a " << a << endl; } int main() {func(); //没有传参func(10); //传参return 0; }缺省参数就是在我们不进…

计算机体系结构:VLIW

原文来自知乎 计算机体系结构&#xff1a;VLIW 本文主要介绍计算机体系结构中的VLIW&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f…

腾讯云服务器99元一年购买入口链接

腾讯云服务器99元一年购买入口链接如下&#xff0c;现在已经降价到61元一年&#xff0c;官方活动链接如下&#xff1a; 腾讯云99元服务器一年购买页面腾讯云活动汇聚了腾讯云最新的促销打折、优惠折扣等信息&#xff0c;你在这里可以找到云服务器、域名、数据库、小程序等等多种…

【uniapp】小程序自定义一个通用的返回按钮组件

左边箭头&#xff0c;右边文字可以自定义&#xff0c;但是不要太长&#xff0c;太长可以自己改 .back的width值&#xff0c;改宽一点。 用这个组件的时候首先要在pages.json里把导航栏变成自定义的&#xff1a; ,{"path" : "pages/test/test","style&…

C#常识篇(三)

内置类型字节大小 以下是 C# 中常见内置数据类型的字节大小&#xff1a; bool&#xff08;布尔&#xff09;类型&#xff1a;通常为 4 或者 8 字节。在不同平台上可能会有所不同。 byte&#xff08;无符号字节&#xff09;类型&#xff1a;始终为 1 字节。 sbyte&#xff08;有…

Goose:Golang中的数据库迁移工具

Goose&#xff1a;Golang中的数据库迁移工具 在Golang开发中&#xff0c;数据库迁移是一个常见的任务&#xff0c;用于管理数据库模式的演化和版本控制。Goose是一个轻量级的、易于使用的数据库迁移工具&#xff0c;专为Golang开发者设计。本文将介绍Goose的基本概念、用法和优…

智能驾驶规划控制理论学习01-自动驾驶系统介绍、规划控制模块介绍

目录 一、自动驾驶系统概述 二、规划控制模块介绍 1、规划控制架构 2、规划控制目标 3、Cartesian和Frenet坐标系 4、Frenet坐标系概览 5、解耦式规划和联合式规划 一、自动驾驶系统概述 目前被国内外广为接受的自动驾驶级别划分标准是 SAE&#xff…

Nano 33 BLE Sense Rev2学习第二节——手机蓝牙接收数据

Nano 33 BLE Sense Rev2需要下载的程序 #include <ArduinoBLE.h> #include "Arduino_BMI270_BMM150.h"float x, y, z; int degreesX 0; int degreesY 0;BLEService ledService("19B10010-E8F2-537E-4F6C-D104768A1214"); // create service// cre…

2024年两会-区块链方向-新质生产力-先进制造业集群

区块链寒冬还未散去&#xff0c;但区块链引发的信任革命&#xff0c;对生产关系的变革&#xff0c;对数字金融产生的广泛影响&#xff0c;对货币金融体系的完全重构&#xff0c;对数据融合和隐私安全带来的巨大冲击才刚刚开始&#xff0c;没有不好的技术&#xff0c;只有不好的…

XSS漏洞--概念、类型、实战--分析与详解[结合靶场pikachu]

目录 一、XSS概念简述 1、XSS简介&#xff1a; 2、XSS基本原理&#xff1a; 3、XSS攻击流程&#xff1a; 4、XSS漏洞危害&#xff1a; 二、XSS类型&#xff1a; 1、反射型XSS&#xff1a; 2、存储型XSS&#xff1a; 3、DOM型XSS&#xff1a; 三、靶场漏洞复现(pikach…

LVS四层负载均衡集群

简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案&#xff0c;终端互联网用户从外部访…

基于 Guava 的 RateLimiter 实现预热功能

基于 Guava 的 RateLimiter 实现预热功能 Guava 的 RateLimiter 类提供了一种限流的机制&#xff0c;它可以控制在给定的时间间隔内允许的操作速率。虽然 Guava 的 RateLimiter 类本身并没有提供预热模型的功能&#xff0c;但是你可以通过自定义的方式实现一个简单的预热模型。…

html地铁跑酷

下面是一个简单的HTML代码来展示一个地铁跑酷游戏&#xff1a; <!DOCTYPE html> <html> <head><title>地铁跑酷</title><style>#player {position: absolute;top: 0;left: 0;width: 50px;height: 50px;background-color: red;}</style…

C语言 通讯录项目动态版本 容量可增加

项目在clion通过简单测试 代码在三个文件里写成 ①main.c 项目大框架 #include"game.h"//显示菜单 void Menu(){printf("****1.添加用户 2.删除用户****\n");printf("****3.查找用户 4.修改用户****\n");printf("****5.显示用户 6.…