Soft coded = good. Hard coded = bad. That’s difficult to argue against and I doubt there’s much dissent in any programming community.
Define it once, use it many times; this is part of the reusability principle that applies to code segments and text literals. When you define an input field in a Visualforce page, more often than not it is based on a field that exists somewhere in the database. It makes a whole lot of sense to take as many attributes from the original field definition as possible, so below are some examples of how you might do that.
(1) When defining a field on a page, prefix it with its label. Use this syntax:
$ObjectType.ObjectName__c.Fields.FieldName__c.Label
…where ObjectName__c and FieldName__c should be replaced as appropriate.
(2) Use the field’s own help text by referring to the InlineHelpText attribute, as shown below in this syntax:
$ObjectType.ObjectName__c.Fields.FieldName__c.InlineHelpText
…where ObjectName__c and FieldName__c should be replaced as appropriate.
(3) Limit the field length in HTML during data entry by using this syntax:
$ObjectType.ObjectName__c.Fields.FieldName__c.Length
…where ObjectName__c and FieldName__c should be replaced as appropriate.
<apex:pageBlock id="searchPageBlock">
<apex:pageBlockSection columns="2"
id="searchPageBlockSection" title="Global Search" collapsible="false">
<apex:pageBlockSectionItem id="searchAirport"
helpText="{!$ObjectType.Airport__c.Fields.Airport_Name__c.InlineHelpText}">
<apex:outputLabel
value="{!$ObjectType.Airport__c.Fields.Airport_Name__c.Label}" />
<apex:inputText
value="{!wrkAirportName}"
tabIndex="2"
id="inpAirportName"
maxlength="{!$ObjectType.Airport__c.Fields.Airport_Name__c.Length}"
onkeypress="return noenter(event);" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
The above code works well for text input fields. If you need information on numeric or other input field types check out the $ObjectType schema information page.