Posts in category 'coldfusion'

  • ColdFusion Tip Of The Day - CFCs Are *Objects*

    So I have the “pleasure” of working on a couple ColdFusion projects on the side. The thing about ColdFusion is it’s a lot like Perl: wonky syntax, often used by total amateurs, and can be horribly abused to do really bad things. And guess who primarily uses ColdFusion? Yeah… total amateurs.

    As a beautiful example, let’s consider the CFC, or ColdFusion Component. This concept was added to ColdFusion in order to add modularity and object orientation to what was, frankly, a largely procedural programming mish-mash. And it does a pretty good job:

    1. It provides mechanisms for encapsulation.
    2. It encourages code reuse.
    3. It encourages documentation.

    Well, assuming it wasn’t being used by amateurs. See, a CFC can, and should, be used like a real object. But let’s say you’re a dumbass who doesn’t understand object oriented programming. Well, in that case, you might do something really stupid, like use a CFC as just a container for a bunch of utility functions that are only loosely related. For example, you might do something stupid like:

    <cfcomponent output = "false">
      <cffunction name = "init" access = "public" returntype = "myType">
        <cfreturn this>
      </cffunction>
    
      <cffunction name = "firstThing" access = "public">
        <cfargument name = "Datasource" type = "string" required = "1" />
    
        ...
      </cffunction>
    
      <cffunction name = "secondThing" access = "public">
        <cfargument name = "Datasource" type = "string" required = "1" />
    
        ...
      </cffunction>
    
      <cffunction name = "thirdThing" access = "public">
        <cfargument name = "Datasource" type = "string" required = "1" />
    
        ...
      </cffunction>
    </cfcomponent>
    

    See, because this person is a moron, they don’t understand the concept of instance variables. A smart person would stuff the datasource into an instance variable, and populate it when the object is initialized. A complete moron would just pass the same parameters in over and over again because he or she is a god damned moron who shouldn’t be allowed near a computer, let alone permitted to program one.

    deep breath

    Bonus tip: Naming arguments to a function “table1”, “table2”, “table3”, etc, should resulting in the “developer” being dragged into the town square, tarred, and feathered.