漫谈硬编码

漫谈硬编码一 什么是硬编码在计算机程序或文本编辑中 硬编码是指将可变变量用一个固定值来代替的方法 例如 以 C 为例 charszText 100 code for inti 0 i lt 100 i code 上述语句使用固定值 100 限定了循环的次数 而没有根据字符串 szText 的实际长度来决定循环的次数 类

一、什么是硬编码

在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。

例如:以C++为例

char szText[100];

/* code */

for (int i = 0; i < 100; ++i)

{

         /* code*/

}

上述语句使用固定值100限定了循环的次数,而没有根据字符串szText的实际长度来决定循环的次数,类似用固定值来限制变量值的情况就是硬编码。

二、硬编码的缺点

用这种方法编译后,如果以后需要更改此变量就非常困难了。

例如:求圆的面积

S = 3.14*r*r;    //这就是硬编码,直接把PI写成了3.14。

如果现在想把圆的面积精度更高一点,PI要使用3.,然而代码已经编译成了可执行程序,因此除了修改代码没有其他办法解决。(可以通过读取外部配置文件,运行时动态的读取PI的值)

三、如何避免

大部分程序语言里,可以将一个固定数值定义为一个宏,然后用这个宏来取代变量名称。当宏名称改变时,变量名不变,这样,当重新编译整个程序时,所有变量都不再是固定值,这样就更容易的实现了改变变量的目的。

例如:

#define MAX_TEXT_LEN 128

/* code */

for (int i = 0; i < MAX_TEXT_LEN; ++i)

{

         /* code*/

}

如果在代码中多处用到了代表某一特定意义的固定值,尽管通过编辑器的查找替换功能也能实现整个变量名称的替换,但也很有可能出现多换或者少换的情况,而在计算机程序中,任何小错误的出现都是不可饶恕的。最好的方法是单独为变量名划分空间,来实现这种变化,就如同前面说的那样,将需要改变的变量名暂时用一个定义好的宏来代替就是一种很好的方法。通常情况下,都应该避免使用硬编码方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178967.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:06
下一篇 2026年3月26日 下午4:07


相关推荐

  • 分布式 – 谈谈你对分布式的理解,为什么引入分布式?

    分布式 – 谈谈你对分布式的理解,为什么引入分布式?不啰嗦,我们直接开始!划重点:真正了解分布式系统的概念,日后工作中具有分布式系统设计思想。 能否在设计中对系统稳定性方面考虑周全。 能构建高QPS健壮的系统架构。1、面试官:那谈谈你对分布式系统的理解问题分析:各种分布式框架层出不穷,SpringCloud,阿里的Dubbo,无论使用哪一个,原理都相同,考察下基本概念掌握的如何。答:为了解决传统单体服务架构带来的各种问题,代码数量庞大,迭代测试维护困难,可能因为一处改动测试不到位造成整个服务瘫痪等问题,分布式系统就是将一

    2022年6月21日
    32
  • verilog hdl与fpga数字系统设计_简易交通信号灯控制系统

    verilog hdl与fpga数字系统设计_简易交通信号灯控制系统1、系统设计要求该交通灯控制器用于主干道与支道公路的交叉路口,要求是优先保证主干道的畅通,因此,设计要求如下。1、平时处于“主干道绿灯,支道红灯”状态,只有在支道有车辆要穿过主干道时,才将交通灯切向“主干道红灯,支道绿灯”,一旦支道无车辆通过路口,交通灯又回到“主干道绿灯,支道红灯”的状态。2、主干道每次通行的时间不得短于1min,支路每次通行的时间不得长于20s,而这两个状态交换过程中出现“主干道黄灯,支道红灯”和“主干道红灯,支道黄灯”的状态,持续时间都为4s。2、设计分析1、用状态

    2026年3月6日
    6
  • 腾讯混元开源轻量翻译模型,网易、科大讯飞、阿里亦有布局

    腾讯混元开源轻量翻译模型,网易、科大讯飞、阿里亦有布局

    2026年3月13日
    2
  • c语言 obj_obj转json

    c语言 obj_obj转json我是前言看开源代码时,总会看到一些大神级别的代码,给人眼前一亮的感觉,多数都是被淡忘的C语言语法,总结下objc写码中遇到的各类非主流代码技巧和一些妙用:[娱乐向]objc最短的方法声明[C]结构体的初始化[C]三元条件表达式的两元使用[C]数组的下标初始化[objc]可变参数类型的block[objc]readonly属性支持扩展的写法[C]小括号内联复合表达式[娱乐向]奇葩的C

    2022年10月18日
    6
  • chatGPT国内怎么用?答案全在这里!3种方法随你选择

    chatGPT国内怎么用?答案全在这里!3种方法随你选择

    2026年3月15日
    1
  • PrintWriter用法简析

    PrintWriter用法简析向文本输出流打印对象的格式化表示形式。此类实现在PrintStream中的所有print方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。与Print

    2022年7月2日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号