Coding style 你对硬编码的态度是什么?
我的是: 硬编码是一种方式!我所有的问题都解决了。一个接一个地编码就行了。而问题又回来了,这会毁了你的一天Coding style 你对硬编码的态度是什么?,coding-style,hard-coding,Coding Style,Hard Coding,我的是: 硬编码是一种方式!我所有的问题都解决了。一个接一个地编码就行了。而问题又回来了,这会毁了你的一天 我绝对讨厌它,但事实是“商人”倾向于喜欢它,因为它花更少的时间来得到他们想要的东西。作为一名软件开发人员,尤其是在公司环境中工作的软件开发人员,大多数人会说:“是啊,何必麻烦呢,只是硬编码而已。”。您对硬编码的态度如何?我通常会尝试将值放入配置文件,而不是硬编码。如果一个值必须硬编码,我用硬编码的值创建一个常量,代码中的任何地方都引用相同的常量。如果值需要更改,可以在一个位置进行 对于应用
我绝对讨厌它,但事实是“商人”倾向于喜欢它,因为它花更少的时间来得到他们想要的东西。作为一名软件开发人员,尤其是在公司环境中工作的软件开发人员,大多数人会说:“是啊,何必麻烦呢,只是硬编码而已。”。您对硬编码的态度如何?我通常会尝试将值放入配置文件,而不是硬编码。如果一个值必须硬编码,我用硬编码的值创建一个常量,代码中的任何地方都引用相同的常量。如果值需要更改,可以在一个位置进行 对于应用程序范围的常量,我通常创建一个类并在其中创建常量 硬编码是应该尽可能避免的事情 如果你在你的代码上硬编码一些东西,它将在很大程度上完全“破坏”你的代码。即使使用与平台无关的语言,您也不能说“编译一次,在任何地方运行”。因为这不是一个好的软件工程实践,我认为避免硬代码更好 但我知道在某些情况下我们需要它,特别是在调试代码时。我建议的方法是:首先用硬代码开发代码,使其稳定并消除硬代码,然后
由于安全问题等原因,我们可能需要硬编码。您可能不允许使用注册表、配置文件或任何东西,因为它们会增加攻击面。但我认为这是一种罕见的情况。硬编码是一种方式 但是正如Anthony提到的,我将可配置值放在它们自己的类中。通过这种方式,它们可以在编译时进行配置,但不会增加配置外部xml/txt文件所带来的复杂性 我只在绝对必要的情况下使用xml/txt文件进行配置。否则,你只是过度工程化了,这可能和硬编码一样糟糕,如果不比硬编码更糟糕的话。更不用说,人们在配置文件中放了很多东西,你根本不想让客户端改变 如果不同的客户端需要不同的配置,没问题,请将硬编码值放入它们自己的程序集/dll中,并为每个客户端部署不同的配置程序集
正如我所说,这是实现变革的关键。作为一个在我早期有硬编码经验的人(不要告诉任何人,伙计),我可以自信地告诉你,它会再次困扰你。我制作了一个应用程序(我现在不谈这个),它必须完全重新编写,因为它有很多硬编码的内容。那是在1998年,伙计
除非你不想在将来支持该客户,否则不要这样做。您现在节省的时间,将用于以后的修复。涉及到几个因素,很难做出涵盖所有情况的断言 如果它是一个有几个周期的长项目,那么如果您开始硬编码,它们很可能很快就会再次弹出。因此,在这些情况下,最好使用适当的解决方案进行修复 但是,如果你有一个周期短的项目,或者有预定义的时间表,并且你无论如何都必须交付产品,那么如果产品能够工作,大多数客户都会感到满意,他们不会关心内部问题。但在这些情况下,我更喜欢硬编码解决方案,但让路径打开,以便在将来很容易制定出合适的解决方案 硬编码无论如何都是不好的,但我认为如果你能正确地记录下来,它可以让下一个人的生活变得更轻松,而且可能不会诅咒你,至少不会诅咒你太多;)
但根据我的经验,我开始避免从一开始就硬编码,只有在我没有其他选择的时候才使用它们,并且总是记录这些情况,以便以后我有时间时能够正确地修复它。只要有正确的理由,硬编码没有错 “正确操作”意味着将所有硬编码集中在一个或两个模块中 对于C,定义codes中的所有值。对于Java,h有一个codes.Java类,该类只包含公共常量 硬编码有几个“正确的理由”
- 简单
- 支持-如果您的值位于外部配置文件中,您就无法保护自己免受愚蠢配置的影响,也无法测试所有可能的配置,如果它是硬编码的,那么您就知道要处理什么了
- 表演李>
- 可读性。您可以在编辑会话中查看所有需要了解的内容李>
此外,硬编码可能会使本地化非常困难,如果不是在许多情况下不可能的话。如果它是某家公司的内部应用程序,那么我想它在某种程度上并不重要,但这并不能使它成为一种良好的软件开发实践。从概念上讲,我不喜欢太多硬编码 但在实践中,我倾向于硬编码一些值。主要原因是
File.Open(configuration["widgetsFileStorage"] + "/" + widgetImage)
LinkWriter.href=configuration["supportUrl"]
File.Open(new WidgetFileLocater().GetUncPath(widgetImage))