G'day:
I think you're possibly over-complicating it.  Basically you want to know a 
true or false value: does the API key exist.  So make the function a 
boolean, and as soon as one of the conditions fails, exit with a false.  If 
you get to the bottom of the function, return true.

There is no point continuing processing if you already have a fail 
condition... it's not going to suddenly stop eing a fail, nor is there 
degrees of "fail" you want to measure.

eg:

function checkSomething(){
    if (someFailureCond){
        return false;
    }
    if (someOtherFailureCond){
        return false;
    }
    // more conditions

    // end of conditions... we're still here so it must be OK
    return true;
}

-- 
Adam



On Thursday, September 6, 2012 5:02:44 PM UTC+1, Jason Allen wrote:
>
> Hey Guys, 
>
> I'm working on some udf's for a cfc.   These functions will either be 
> successful, or throw an error.
>
> The way I'm writing them now, there is an explicit error value, as well as 
> an explicit success value. 
>
> Each function starts with both being equal to 0. If during the function's 
> flow something breaks, the error value will be set to a string describing 
> the error. Also, if during the flow, the function is deemed successful 
> (error still eq 0 and the work is done with good result) the 'success' 
> value will be set to 1. 
>
> I'm wondering though, if the 'success' value is really necessary as 
> through every step of the function I check for errors or unsuccesful 
> queries/functions and will flag the error variable if anything is caught.  
>
> If the function works, I can safely say that the error variable will 
> remain set to '0', so why not just look for 'error eq 0' to determine if 
> the function was successful?
>
> Here's an example of a function I've written. 
>
> [code] <cffunction name="checkExistsAPIKey" returntype="struct" 
> output="no" access="remote" returnformat="json">
>  
>   <cfargument name="userID" type="string" required="true" default="" 
> hint="user email" />
>  <cfset checkExistsAPIKeyResults=StructNew()>
> <cfset checkExistsAPIKeyResults.error = 0>
> <cfset checkExistsAPIKeyResults.success = 0>
>  <cfif not isNumeric(arguments.userID)>
> <cfset checkExistsAPIKEYResults.error = 1>
> </cfif>
>  <cfif checkExistsAPIKEYResults.error eq 0>
>  <cfset var local = StructNew()>
> <cfset local.userID = "#arguments.userID#">
>  <cfquery name="checkExistsAPIKey" datasource="dbAPI" maxRows="1" >
>  SELECT keyID
> FROM tbl_apiKey
> WHERE userID = <cfqueryparam value="#local.userID#">
>  </cfquery>
>  <cfif checkExistsAPIKey.recordcount eq 0>
> <cfset checkExistsAPIKEYResults.error = 1>
> <cfelse>
> <cfset checkExistsAPIKEYResults.success = 1>
> </cfif>
>  </cfif>
>  <cfreturn checkExistsAPIKEYResults> 
>  </cffunction>[/code]
>
> In this function, I think error=0 would return the same result as 
> success=1, as for the function to be successful, it must not catch any 
> errors. I have at the end of each function a check to make sure the 
> function is getting what it's supposed to, and if not, it's flagged as 
> error. So if error=0, I know it was successful. 
>
> Or... should I use 'success' and if there is an error, set 'success eq 0'
>
> Thoughts?
>

-- 
online documentation: http://openbd.org/manual/
 http://groups.google.com/group/openbd?hl=en

Reply via email to