Cleverest Code of the Day!
-
A consultant friend of mine who has been programming far longer than I have—he started programming on the early Macs and helped write the first music notation software for the Mac—doesn't see why C# should need to use .SubString() to get the left/right most characters from a string and instead wrote these. I don't really have a problem with this sort of thing. I just don't see the point, but that's just me.
public string LeftStringFunction(string sValue, int iMaxLength) { //Check if the value is valid if (string.IsNullOrEmpty(sValue)) { //Set valid empty string as string could be null sValue = string.Empty; } else if (sValue.Length > iMaxLength) { //Make the string no longer than the max length sValue = sValue.Substring(0, iMaxLength); } //Return the string return sValue; } public string RightStringFunction(string sValue, int iMaxLength) { //Check if the value is valid if (string.IsNullOrEmpty(sValue)) { //Set valid empty string as string could be null sValue = string.Empty; } else if (sValue.Length > iMaxLength) { //Make the string no longer than the max length sValue = sValue.Substring(sValue.Length - iMaxLength, iMaxLength); } //Return the string return sValue; }
"...JavaScript could teach Dyson how to suck." -- Nagy Vilmos
I seem to remember VB having that functionality for strings.
-
Left$ would be GwBasic (not VB6 where the $s were dropped) :-)
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
The
$
s weren't required, but IIRC they were still allowed.Left
returned aVariant
, whereasLeft$
returned aString
. But I could be wrong - it's been over 15 years since I last touched VB6. :D
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
Richard Deeming wrote:
either of which throw an exception if you specify a length that's longer than the string.
Why on Earth should they?
GCS d-- s-/++ a- C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X
Because that's how there were designed. Probably because that's how the Java version[^] works. :) Specifying an index or a length outside of the string is usually a sign that something's gone wrong. In which case, it's better to have your application crash than for it to continue with potentially corrupted data. If you don't like it, you can always add your own checks. Or roll your own "ignore-the-errors" wrappers. Or call the VB.NET methods[^].
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
The
$
s weren't required, but IIRC they were still allowed.Left
returned aVariant
, whereasLeft$
returned aString
. But I could be wrong - it's been over 15 years since I last touched VB6. :D
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
Ah yes, now that you say it, it sounds vaguely familiar :-)
Nish Nishant Consultant Software Architect Ganymede Software Solutions LLC www.ganymedesoftwaresolutions.com
-
While comparing my changes with the server source code, just saw with my two eyes this great piece of code which checks if an nullable int is null or not :
private bool IsHasValue(int? a)
{
if (a== null)
{
return false;
}
return true;
}The code is written by very senior developer on my team with huge years of experience in c# :laugh:
-
While comparing my changes with the server source code, just saw with my two eyes this great piece of code which checks if an nullable int is null or not :
private bool IsHasValue(int? a)
{
if (a== null)
{
return false;
}
return true;
}The code is written by very senior developer on my team with huge years of experience in c# :laugh:
He hasn't written enough code for the week.
-
Well obviously checking for false (in the calling code) is so much better than checking for null. Plus, if the int isn't null (contains a value) then you get the wonderful True back and true just makes you feel good. :laugh:
my one of the colleague just pinged me with :
IsHasValue() => IsHasHavingValuePerhaps();
-
While comparing my changes with the server source code, just saw with my two eyes this great piece of code which checks if an nullable int is null or not :
private bool IsHasValue(int? a)
{
if (a== null)
{
return false;
}
return true;
}The code is written by very senior developer on my team with huge years of experience in c# :laugh:
My all-time favourite was from a mid-level programmer of ours who wanted to pass a form field value from one web page to the next: something he did all the time... except that in this instance, for some inexplicable reason, he created a table in the database, used Ajax to write the value to it and retrieve a record ID; he then put the record ID into a hidden field on the page, submitted the form, and then, in the next page, used the record ID to retrieve the value from the database and delete the record. Unfortunately, his English wasn't that great... so in response to the question, "What the hell is this supposed to be?" he said, "That mean I do my way. Fuck you, Dan!"
-
My all-time favourite was from a mid-level programmer of ours who wanted to pass a form field value from one web page to the next: something he did all the time... except that in this instance, for some inexplicable reason, he created a table in the database, used Ajax to write the value to it and retrieve a record ID; he then put the record ID into a hidden field on the page, submitted the form, and then, in the next page, used the record ID to retrieve the value from the database and delete the record. Unfortunately, his English wasn't that great... so in response to the question, "What the hell is this supposed to be?" he said, "That mean I do my way. Fuck you, Dan!"
I also had a mid level developer colleague who had set the bool flag to false by default and then the next statement was checking if it's true
-
I also had a mid level developer colleague who had set the bool flag to false by default and then the next statement was checking if it's true
Excellent. The same one mentioned above wrote in ASP (Classic): "if cstr(ucase(x))=cstr(ucase("CA")) then ..." there was also some code about cint("1") somewhere...