|
Ahhh sales guys... they always get the good stuff. The company I work for decided to use Java for their programming applications and UI into the system. Someone should be flogged, keel hauled, or both for that decision.
Uptight Ex-Military Republican married to a Commie Lib - How weird is that?
|
|
|
|
|
I found something that made me blink with its absurdity the other day and what was more absurd was the defense the developer used when confronted with it.
while looking through countless strings storing SQL queries I noticed they were all written as so:
private static final String SQL = ""
+ " SELECT "
+ " nvl( vss.structure_address, "
+ " ifsapp.serial_structure_template_api.get_pos(top_part_no, "
etc...
When I asked him about the first empty string he looked at me as though I was suggesting replacing all hiss method calls with gotos "You can't just add a sting to nothing you know!" he snarled "you need an empty base"
|
|
|
|
|
TClarke wrote: private static final String SQL = ""
+ " SELECT "
+ " nvl( vss.structure_address, "
+ " ifsapp.serial_structure_template_api.get_pos(top_part_no,"
etc...
Without the "" on the first line, you couldn't start the second line with a +
hence the indentation might be at risk, i.e. the third and following lines might not
align with the second one; this may become very important when the code is worthwhile
and is likely be published on one or more forums.
BTW: the code itself is OK, the compiler does the concatenation for you.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
If it had just been down to him being a format obsessive I would have let it slide but he claimed it was not possible to start a string with a space unless you concatenated it to a blank string. Which is of course complete bollocks
Also this SQL was just going off to run in a database, it wouldn't be seen by anyone but developers on the team, none of which would be any less capable of reading the code if it wasn't aligned like that
Luc Pattyn wrote: BTW: the code itself is OK, the compiler does the concatenation for you.
Sure. The byte code comes out the same, he didn't know that though
|
|
|
|
|
Luc Pattyn wrote: the code itself is OK, the compiler does the concatenation for you.
But the string concatenation that has been used is pretty costly right?
|
|
|
|
|
Compilers are smart enough to understand that the concatenation of two literals
yields a bigger literal. They don't generate run-time code to get that done.
Also -- not applicable in this case -- the CLR compilers are known to use a StringBuilder
if your code is performing complex concatenation involving not just literals, even
when the source does not call for a StringBuilder explicitly.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Oh nice! I didn't know that…
Now I can write sloppy string concatenation code without worrying about the performance penalty! ^_^
Does this feature count as encouraging bad coding practices?
ROFLOLMFAO
|
|
|
|
|
Ri Qen-Sin wrote: Does this feature count as encouraging bad coding practices?
Most people dont need to be encouraged in the wrong direction.
Compiler optimizations typically improve the simple cases, and seldom drastically improve
the complex cases (where most could be gained!). So staying vigilent would pay off
frequently.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Indentation-wise, I find that this works well:
string query
= "SELECT [foo], [bar] "
+ "FROM [f] "
+ "WHERE [id] = @id";
|
|
|
|
|
That's fine by me, the only risk is you might omit a space somewhere, which you
would notice more easily if everything were on one line.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
This reminds me of a consultancy developer who wrote all of his SQL statements like this:
"SELECT field1, \r\n" +
" field2, \r\n" +
" field3 \r\n" +
"FROM \r\n" +
" myTable \r\n"; It still makes me shudder.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
what are those \r characters doing there?
|
|
|
|
|
Isn't that the Cariage Return code
Like '\n' is the new line feed code.
codito ergo sum
|
|
|
|
|
Certainly is. He put them in to format them so they would appear nice if ever they were printed out from code.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Environment.NewLine is rather really environment-friendly right?
|
|
|
|
|
It is, but don't tell him that. The real WTF is formatting this out the way he did though.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
I would do that as:
@"
SELECT field1,
field2,
field3
FROM
mytable
";
It still puts the newlines in the string for when I dump a CommandText to a log.
|
|
|
|
|
That makes sense sometimes, especially if you're debugging [or logging rather] the actual SQL code sent to the DBMS.
--
Smell-o-vision users, insert nostril tubes now
|
|
|
|
|
To be honest, the time it takes you to do this is wasted time - especially, as I noted in the OP, when you are a consultant and thus billing by the hour.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
no joke...this is from a code generator developed by an earlier employee.
SQL = "INSERT INTO Orders (" & _<br />
" OrderID, " & _<br />
" CustomerID, " & _<br />
" EmployeeID, " & _<br />
" OrderDate, " & _<br />
" RequiredDate, " & _<br />
" ShippedDate, " & _<br />
" ShipVia, " & _<br />
" Freight, " & _<br />
" ShipName, " & _<br />
" ShipAddress, " & _<br />
" ShipCity, " & _<br />
" ShipRegion, " & _<br />
" ShipPostalCode, " & _<br />
" ShipCountry " & _<br />
" )" & _<br />
"VALUES (" & _<br />
"'" & Orders.OrderID & "', " & _<br />
"'" & Orders.CustomerID & "', " & _<br />
"'" & Orders.EmployeeID & "', " & _<br />
DataCommonFunctions.SQLDate(Orders.OrderDate) & ", " & _<br />
DataCommonFunctions.SQLDate(Orders.RequiredDate) & ", " & _<br />
DataCommonFunctions.SQLDate(Orders.ShippedDate) & ", " & _<br />
"'" & Orders.ShipVia & "', " & _<br />
"'" & Orders.Freight & "', " & _<br />
"'" & Orders.ShipName & "', " & _<br />
"'" & Orders.ShipAddress & "', " & _<br />
"'" & Orders.ShipCity & "', " & _<br />
"'" & Orders.ShipRegion & "', " & _<br />
"'" & Orders.ShipPostalCode & "', " & _<br />
"'" & Orders.ShipCountry & "') "
Sql Injection anyone?!?
Whenever I put sql in code it's always on one line and I'm using parameters!
|
|
|
|
|
the coder wants readable code, so it isnt such a horror.
Greetings from Germany
|
|
|
|
|
But a horror for the compiler.
|
|
|
|
|
compilers don't have feelings. they cannot be horrified.
|
|
|
|
|
I bet it was comments like this that led to SkyNet waging war on man....
|
|
|
|
|
The compiler makes one string of it all and so the empty string is "Over the hills".
I like readable code so much, that I often write a little more code and comments and think about value and class names up to 10 minutes. It helps me to make a 'master architecture' for my work. It has often paid off, because I can easy reuse code. I have to maintain 6 projects in which a lot of code is reused. The changes and enhancements for Vista I wrote 1 time and use it 6 times.
Greetings from Germany
|
|
|
|