标签: hard-coding

"硬编码"是什么意思?

我的作业要求我访问test.txt文档,因此文件名必须硬编码到我的C盘.我不知道硬编码意味着什么.有人可以帮我这个吗?

definition hard-coding

22
推荐指数
5
解决办法
8万
查看次数

硬编码文字是否可以接受?

我目前正在处理的代码库中充斥着硬编码值.

我将所有硬编码值视为代码气味,并尝试在可能的情况下消除它们......但是有些情况我不确定.

以下是我能想到的两个例子让我想知道最佳做法是什么:

1. MyTextBox.Text = someCondition ? "Yes" : "No"
2. double myPercentage = myValue / 100;
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,最好的做法是创建一个允许我在配置文件中执行MyHelper.Yes和MyHelper.No或者类似的东西的类(虽然它不太可能改变,谁知道是否有可能曾经是一个案例,其用法将区分大小写).

在第二种情况下,除非数学定律改变,否则找不到百分比的百分比不可能改变......但我仍然想知道是否有更好的方法.

任何人都可以建议一种适当的方式来处理这种硬编码吗?任何人都可以想到硬编码是可接受的做法吗?

language-agnostic hard-coding

15
推荐指数
6
解决办法
3729
查看次数

你对硬编码的态度是什么?

我的是这样的:

硬编码就是这样!我所有的问题都消失了.只需逐个编码即可.而问题又回来了.

我绝对讨厌它,但事实是"商界人士"倾向于喜欢它,因为它需要更少的时间来获得他们想要的东西.作为一个特别是在企业环境中工作的软件开发人员,大多数人都会说:"是的,为什么要打扰,只需要硬编码".你对硬编码的态度是什么?

coding-style hard-coding

8
推荐指数
4
解决办法
1万
查看次数

如何在不对html进行硬编码的情况下创建html报告?

我目前正在重构一个控制台应用程序,其主要职责是根据存储在数据库中的值生成报告.

我现在创建报告的方式如下:

const string format = "<tr><td>{0, 10}</td><td>
                       {1}</td><td>{2, 8}</td><td>{3}</td><td>{4, -30}</td>
                       <td>{5}</td><td>{6}</td></tr>";

if(items.Count > 0)
{
    builder.AppendLine(
        String.Format(format, "Date", "Id", "WorkItemId", 
                      "Account Number", "Name", "Address", "Description"));
}

foreach(Item item in items)
{
    builder.AppendLine(String.Format(format, item.StartDate, item.Id,
                       item.WorkItemId, item.AccountNumber, 
                       String.Format("{0} {1}", 
                                     item.FirstName, item.LastName), 
                       item.Address, item.Description));
}

string report = String.Format("<html><table border=\"1\">{0}
                                     </table></html>",
                              builder.ToString());
Run Code Online (Sandbox Code Playgroud)

(以上只是一个示例......并对格式化感到抱歉......我试着将其格式化,因此不需要水平滚动....)

我真的不喜欢这样做我已经这样做了.它现在可以正常工作......但我认为它不可维护......特别是如果报告在需要创建的html方面变得更复杂的话.更糟糕的是,我的团队中的其他开发人员肯定会复制并粘贴我的代码,用于生成HTML报告的应用程序,并且可能会造成可怕的混乱.(我已经看到了这样的恐怖产生!想象一下一个报告函数,它有数百行硬编码的sql来检索报告的细节......它足以让一个成年男子哭!)

然而,虽然我根本不喜欢这个......我只是想不出一个不同的方式去做.

当然必须有办法做到这一点......我很确定.不久前,我在aspx页面中生成表时做了同样的事情,直到有人向我展示我可以将对象绑定到控件并让.NET处理渲染.它将类似于上面代码的可怕代码变成了两三条优雅的优点.

有没有人知道为这个报告创建html的类似方法而不用硬编码html?

.net html c# reporting hard-coding

7
推荐指数
1
解决办法
1万
查看次数

如何避免硬编码字符串

这是关于最佳编码实践的问题.我想知道如何最好地避免在.NET应用程序中硬编码字符串和值的共识.到目前为止我在以前工作过的地方看到了什么:

  • 使用资源.resx文件
  • 在App.config或web.config中存储这些值和字符串
  • 创建一个静态类ApplicationStrings并声明其中的所有字符串和值:

    public static class ApplicationStrings
    {
        #region constants
        public const string APPLICATION_NAME = "X";
        public const string APPLICATION_RESOURCEMANAGER_NAME = "ResourceManagerX";
        public const string APPLICATION_DEFAULT_LOGFILENAME = "log.txt";
    }
    
    Run Code Online (Sandbox Code Playgroud)

但是,不是第三种方法,只是另一种硬编码?有这样一堂课有意义吗?好处是所有字符串都在一个地方,但是真的避免使用硬编码吗?

此外,如果你已经养成了这种情况的其他习惯,请随时发布.

.net coding-style hard-coding

6
推荐指数
1
解决办法
1890
查看次数

字符串的外部文件,而不是硬编码

我有开发一些Android应用程序的经验,它们可以轻松地使用XML字符串文件存储字符串.我最后一次开发桌面Java应用程序时,我对字符串进行了硬编码(例如按钮标题,标签等...).我已经知道这是不好的做法,我应该将字符串存储在一个文件中.

我不知道该怎么做.

  • 我目前正在Eclipse中开发.我应该在项目文件夹中粘贴一个文本文件吗?
  • 这是标准吗?
  • 你如何在代码中找到该文件?

java eclipse file hard-coding

6
推荐指数
2
解决办法
2316
查看次数

如何在代码中隐藏文字

在代码中隐藏文字值的主要现有方法是什么,因此只使用hexdumper或反编译器就不能轻易跟踪它们?

例如,而不是编码:

    static final int MY_VALUE = 100;
Run Code Online (Sandbox Code Playgroud)

我们可以有:

    static final int MY_VALUE = myFunction1();

    private int myFunction1(){
        int i = 23;
        i += 8 << 4;
        for(int j = 0; j < 3; j++){
            i-= (j<<1);
        }
        return myFunction2(i);
    }

    private int myFunction2(int i){
        return i + 19;
    }
Run Code Online (Sandbox Code Playgroud)

这只是我们要做的事情的一个例子.(是的,我知道,编译器可以优化它并预先计算常量).

免责声明:我知道这根本不会提供任何安全性,但它使代码更加模糊(或有趣)进行逆向工程.这样做的目的只是为了强制攻击者调试程序,并在其上浪费时间.请记住,我们这样做只是为了好玩.

literals hard-coding security-by-obscurity

5
推荐指数
1
解决办法
355
查看次数

硬编码的STRINGS是否可以接受?

类似于硬编码文字是否可以接受?,但我在这里特别想到"魔法字符串".

在一个大型项目中,我们有一个配置选项表,如下所示:

Name         Value
----         -----
FOO_ENABLED  Y
BAR_ENABLED  N
...
Run Code Online (Sandbox Code Playgroud)

(数以百计).

通常的做法是调用泛型函数来测试这样的选项:

if (config_options.value('FOO_ENABLED') == 'Y') ...
Run Code Online (Sandbox Code Playgroud)

(当然,可能需要在系统代码的许多地方检查相同的选项.)

添加新选项时,我正在考虑添加一个隐藏"魔术字符串"的函数,如下所示:

if (config_options.foo_enabled()) ...
Run Code Online (Sandbox Code Playgroud)

然而,同事们认为我已经过火了并反对这样做,更喜欢硬编码,因为:

  • 这就是我们通常做的事情
  • 它使得在调试代码时更容易看到发生了什么

麻烦的是,我可以看到他们的观点!实际上,我们永远不会出于任何原因重命名选项,因此我能为我的函数考虑的唯一优势是编译器会捕获像fo_enabled()这样的拼写错误,但不能捕获'FO_ENABLED'.

你怎么看?我错过了其他任何优点/缺点吗?

language-agnostic literals string-literals hard-coding

2
推荐指数
5
解决办法
5338
查看次数

如果数据被1个应用程序使用,则使用数据库表的好处而不仅仅是硬编码简单的数据列表

有一段时间,许多人告诉我,美国国家(和地区)的列表应存储在数据库表中,并缓存给使用该信息的应用程序.他们为此提供的唯一理由是促进正常化,因为"这就是我们一直以来的做法".

现在,如果列表经常因为应用程序的范围在国际上发生变化(比如包括加拿大省),我可以理解将列表抽象为数据表,该数据表也表示国家标识符.但是,如果列表几乎被锁定并且仅在应用程序的一个屏幕上使用,那么值得进行查询和缓存吗?存储SMALLINT外键比CHAR(2)好得多的区别?它总是实用吗?

只是在思考我和我合作过的公司所见过的这种趋势.

abstraction hard-coding

2
推荐指数
1
解决办法
1221
查看次数

SQL Server:避免跨数据库视图中的数据库名称的硬编码

因此,假设您在同一服务器上有两个SQL Server数据库,它们在视图,函数和存储过程中引用彼此的表.

你知道,这样的事情:

use database_foo

create view spaghetti
as
select f.col1, c.col2
from fusilli f
inner join database_bar.dbo.conchigli c on f.id = c.id
Run Code Online (Sandbox Code Playgroud)

(我知道跨数据库视图不是很好的做法,但只是说你坚持使用它)

是否有任何好的技术可以避免对数据库名称进行"硬编码"?

(那么你是否需要偶尔重新指向另一个数据库 - 也许是为了测试 - 你不需要编辑视图,fns,sps的负载)

我对SQL 2005或SQL 2008解决方案感兴趣.干杯.

sql-server hard-coding cross-database

2
推荐指数
1
解决办法
2246
查看次数

什么是硬编码?

我相信这是一个已分配且无法更改的值。一个例子是:

int limit =5;
    for(int i =0 ; i<limit; i++){
        printf("w");
Run Code Online (Sandbox Code Playgroud)

另外我不应该使用硬编码的原因是什么?对不起,我是编程新手。

hard-coding

2
推荐指数
1
解决办法
1107
查看次数

Android中的简单硬编码ListView

是否可以在Android中执行此类操作?(基本上相当于selectoptionHTML):

<ListView android:layout_height="match_parent"
    android:layout_width="match_parent">
        <ListViewItem>TEST</ListViewItem>
        <ListViewItem>TEST1</ListViewItem>
</ListView>
Run Code Online (Sandbox Code Playgroud)

我试过这个,显然不起作用.我在网上找到的只是有关使用适配器的信息,但由于我有一些硬编码值,我不需要使用适配器 - 我很乐意将它直接放在XML文件中.

这可能吗?

android listview hard-coding

0
推荐指数
1
解决办法
2494
查看次数