Content deleted Content added
Qwertyxp2000 (talk | contribs) →Softcoding: but this page IS hardcoding |
consistent terminology. rm unnec pipes. |
||
Line 1:
{{Short description|Putting data in the source code of a program}}
{{redirect|Hardcoded|the video game|Hardcoded (video game)}}
{{More citations needed|date=May 2021}}
'''Hard coding''' (also '''hard-coding''' or '''hardcoding''') is the software development practice of embedding data directly into the [[source code]] of a [[computer program|program]] or other executable object, as opposed to obtaining the data from external sources or generating it at [[Run time (program lifecycle phase)|runtime]].
Line 9:
Data that is hard-coded is best suited for unchanging pieces of information, such as [[physical constant]]s, [[Version number|version numbers]], and static text elements.
==Overview==
Hard coding requires the program's source code to be changed any time the input data or desired format changes, when it might be more convenient to the end user to change the detail by some means outside the program.<ref name="Dustin2002">{{cite book|author=Elfriede Dustin|title=Effective Software Testing: 50 Specific Ways to Improve Your Testing|url=https://books.google.com/books?id=K0qWBUOAf6IC&pg=PA188|year=2002|publisher=Addison-Wesley Professional|isbn=978-0-201-79429-8|pages=188–}}</ref>
Hard coding is often required, but can also be considered an [[anti-pattern]].<ref name="Janca2020">{{cite book|author=Tanya Janca|title=Alice and Bob Learn Application Security|url=https://books.google.com/books?id=UT4DEAAAQBAJ&pg=PA15|date=14 October 2020|publisher=Wiley|isbn=978-1-119-68740-5|pages=15–}}</ref> Programmers may not have a dynamic user interface solution for the end user worked out but must still deliver the feature or release the program. This is usually temporary but does resolve, in a short
The term "hard-coded" was initially used as an analogy to hardwiring circuits
In the context of run-time extensible [[collaborative development environment]]s such as [[Multi-user dungeon|MUD]]s,
==
==
As a [[digital rights management]] measure, software developers may
On the opposite case, a
== Fixed installation path ==
Line 38:
==Special folders==
Some Windows operating systems have so
===Profile path===
Line 44:
===My Documents folder path===
Some Windows programs
==Solution==
Line 61:
In rare cases where the possible number of inputs is small enough, a contestant might consider using an approach that maps all possible inputs to their correct outputs. This program would be considered a hard-coded solution as opposed to an [[algorithm]]ic one (even though the hard-coded program might be the output of an algorithmic program).
==
'''
===Programming practice===
Avoiding hard coding of commonly altered values is good programming practice. Users of the software should be able to customize it to their needs, within reason, without having to edit the program's source code. Similarly, careful programmers avoid [[Magic number (programming)#Unnamed numerical constants|magic numbers]] in their code
The term is generally used where
===Potential problems===
At the extreme end, soft-coded programs develop their own poorly designed and implemented scripting languages, and configuration files that require advanced programming skills to edit. This can lead to the production of utilities to assist in configuring the original program, and these utilities often end up being
The boundary between proper configurability and problematic soft-coding changes with the style and nature of a program. Closed-source programs must be very configurable<!-- but generally aren't! -->, as the end user does not have access to the source to make any changes. In-house software and software with limited distribution can be less configurable, as distributing altered copies is simpler. Custom-built web applications are often best with limited configurability, as altering the scripts is seldom any harder than altering a configuration file. <!-- Witness the scores of CMS systems that are so much harder to work with than a bunch of html files in www/data! -->
To avoid
===Achieving flexibility===
Several legitimate design patterns exist for achieving the flexibility that
==See also==
|