Guess His Experience Level
-
This guy is our point person for "process improvement". Guess how many years he's been coding? This is using VB.NET 2008. Great work don't ya think? :~ Let me know if you'd like to see more. :laugh:
'*********************************************************************
'* Module modCommon
'*
'* This module contains objects referenced by the entire application
'* for various purposes.
'*********************************************************************Imports System.Collections
Imports System.Data.OleDB
Imports System.Data.SqlClient
Imports System.IO
Imports System.Runtime.InteropServices.Marshal
Imports System.Text
Imports System.XmlModule modCommon
'* Constants
Public Const constLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Public Const constDigits = "0123456789"'* OLE Database Connections
Public oconnCSUtilities As OleDbConnection
'* SQL Database Connections
Public sconnCommonData As SqlConnection
Public sconnITProjectTracker As SqlConnection
Public sconnMZP As SqlConnection'* OLE Database Variables
Public ocmdProjectTracker As OleDbCommand
Public odrProjectTracker As OleDbDataReader'* SQL Database Variables
Public scmdAcctClient As SqlCommand
Public sdrAcctClient As SqlDataReader
Public scmdClientInfo As SqlCommand
Public sdrClientInfo As SqlDataReader
Public scmdClientTransactionFileTypes As SqlCommand
Public sdrClientTransactionFileTypes As SqlDataReader
Public scmdCompanyNameCompanyName As SqlCommand
Public sdrCompanyNameCompanyName As SqlDataReader
Public scmdDataLocks As SqlCommand
Public sdrDataLocks As SqlDataReader
Public scmdDataValidation As SqlCommand
Public sdrDataValidation As SqlDataReader
Public scmdJCLDSNOverride As SqlCommand
Public sdrJCLDSNOverride As SqlDataReader
Public scmdJCLSequence As SqlCommand
Public sdrJCLSequence As SqlDataReader
Public scmdLookupTable As SqlCommand
Public sdrLookupTable As SqlDataReader
Public scmdMasterFileCounts As SqlCommand
Public sdrMasterFileCounts As SqlDataReader
Public scmdMZPUser As SqlCommand
Public sdrMZPUser As SqlDataReader
Public scmdRecordTypes As SqlCommand
Public sdrRecordTypes As SqlDataReader
Public scmdReport As SqlCommand
Public sdrReport As SqlDataReader
Public scmdRequestData As SqlCommand
Public sdrRequestData As SqlDataReader
Public scmdTransactionFiles As SqlCommand
Public sdrTransactionFiles As SqlDataReader
Public scmdTransactionFileTypes As SqlCommand
Public sdrTransactionFileTypes As SqlDataReader
Public scmdUpdtSummCounts As SqlCommThis is clearly copied from somewhere. You can see that from the nonsense prefixes. Either from the net or from this VB6 Win32 API code snippet tool from MS (forgot the exact name). Obviously this guy is a VB5/6 'programmer' who was under the earth for the last 10 years. Maybe he is coding for 30 years or so, but he is/was 'coding' exclusively in VB. He has no idea of OO programming, maybe he thinks VB5/6 IS OO... :doh: And regarding modules named modCommon or Globals or the like: they are just crying out loud that there's a significant problem with the systems overall architecture (which is also obvious from the module description). Regards Thomas
www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Programmer - an organism that turns coffee into software. -
This guy is our point person for "process improvement". Guess how many years he's been coding? This is using VB.NET 2008. Great work don't ya think? :~ Let me know if you'd like to see more. :laugh:
'*********************************************************************
'* Module modCommon
'*
'* This module contains objects referenced by the entire application
'* for various purposes.
'*********************************************************************Imports System.Collections
Imports System.Data.OleDB
Imports System.Data.SqlClient
Imports System.IO
Imports System.Runtime.InteropServices.Marshal
Imports System.Text
Imports System.XmlModule modCommon
'* Constants
Public Const constLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Public Const constDigits = "0123456789"'* OLE Database Connections
Public oconnCSUtilities As OleDbConnection
'* SQL Database Connections
Public sconnCommonData As SqlConnection
Public sconnITProjectTracker As SqlConnection
Public sconnMZP As SqlConnection'* OLE Database Variables
Public ocmdProjectTracker As OleDbCommand
Public odrProjectTracker As OleDbDataReader'* SQL Database Variables
Public scmdAcctClient As SqlCommand
Public sdrAcctClient As SqlDataReader
Public scmdClientInfo As SqlCommand
Public sdrClientInfo As SqlDataReader
Public scmdClientTransactionFileTypes As SqlCommand
Public sdrClientTransactionFileTypes As SqlDataReader
Public scmdCompanyNameCompanyName As SqlCommand
Public sdrCompanyNameCompanyName As SqlDataReader
Public scmdDataLocks As SqlCommand
Public sdrDataLocks As SqlDataReader
Public scmdDataValidation As SqlCommand
Public sdrDataValidation As SqlDataReader
Public scmdJCLDSNOverride As SqlCommand
Public sdrJCLDSNOverride As SqlDataReader
Public scmdJCLSequence As SqlCommand
Public sdrJCLSequence As SqlDataReader
Public scmdLookupTable As SqlCommand
Public sdrLookupTable As SqlDataReader
Public scmdMasterFileCounts As SqlCommand
Public sdrMasterFileCounts As SqlDataReader
Public scmdMZPUser As SqlCommand
Public sdrMZPUser As SqlDataReader
Public scmdRecordTypes As SqlCommand
Public sdrRecordTypes As SqlDataReader
Public scmdReport As SqlCommand
Public sdrReport As SqlDataReader
Public scmdRequestData As SqlCommand
Public sdrRequestData As SqlDataReader
Public scmdTransactionFiles As SqlCommand
Public sdrTransactionFiles As SqlDataReader
Public scmdTransactionFileTypes As SqlCommand
Public sdrTransactionFileTypes As SqlDataReader
Public scmdUpdtSummCounts As SqlComm:omg:
-
This guy is our point person for "process improvement". Guess how many years he's been coding? This is using VB.NET 2008. Great work don't ya think? :~ Let me know if you'd like to see more. :laugh:
'*********************************************************************
'* Module modCommon
'*
'* This module contains objects referenced by the entire application
'* for various purposes.
'*********************************************************************Imports System.Collections
Imports System.Data.OleDB
Imports System.Data.SqlClient
Imports System.IO
Imports System.Runtime.InteropServices.Marshal
Imports System.Text
Imports System.XmlModule modCommon
'* Constants
Public Const constLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Public Const constDigits = "0123456789"'* OLE Database Connections
Public oconnCSUtilities As OleDbConnection
'* SQL Database Connections
Public sconnCommonData As SqlConnection
Public sconnITProjectTracker As SqlConnection
Public sconnMZP As SqlConnection'* OLE Database Variables
Public ocmdProjectTracker As OleDbCommand
Public odrProjectTracker As OleDbDataReader'* SQL Database Variables
Public scmdAcctClient As SqlCommand
Public sdrAcctClient As SqlDataReader
Public scmdClientInfo As SqlCommand
Public sdrClientInfo As SqlDataReader
Public scmdClientTransactionFileTypes As SqlCommand
Public sdrClientTransactionFileTypes As SqlDataReader
Public scmdCompanyNameCompanyName As SqlCommand
Public sdrCompanyNameCompanyName As SqlDataReader
Public scmdDataLocks As SqlCommand
Public sdrDataLocks As SqlDataReader
Public scmdDataValidation As SqlCommand
Public sdrDataValidation As SqlDataReader
Public scmdJCLDSNOverride As SqlCommand
Public sdrJCLDSNOverride As SqlDataReader
Public scmdJCLSequence As SqlCommand
Public sdrJCLSequence As SqlDataReader
Public scmdLookupTable As SqlCommand
Public sdrLookupTable As SqlDataReader
Public scmdMasterFileCounts As SqlCommand
Public sdrMasterFileCounts As SqlDataReader
Public scmdMZPUser As SqlCommand
Public sdrMZPUser As SqlDataReader
Public scmdRecordTypes As SqlCommand
Public sdrRecordTypes As SqlDataReader
Public scmdReport As SqlCommand
Public sdrReport As SqlDataReader
Public scmdRequestData As SqlCommand
Public sdrRequestData As SqlDataReader
Public scmdTransactionFiles As SqlCommand
Public sdrTransactionFiles As SqlDataReader
Public scmdTransactionFileTypes As SqlCommand
Public sdrTransactionFileTypes As SqlDataReader
Public scmdUpdtSummCounts As SqlCommAre we sure it's not April's fool joke ? If not the guy must quit drugs and never (OK I really mean it. NEVER) left alone with a keyboard and a code editor. :thumbsdown:
-
This guy is our point person for "process improvement". Guess how many years he's been coding? This is using VB.NET 2008. Great work don't ya think? :~ Let me know if you'd like to see more. :laugh:
'*********************************************************************
'* Module modCommon
'*
'* This module contains objects referenced by the entire application
'* for various purposes.
'*********************************************************************Imports System.Collections
Imports System.Data.OleDB
Imports System.Data.SqlClient
Imports System.IO
Imports System.Runtime.InteropServices.Marshal
Imports System.Text
Imports System.XmlModule modCommon
'* Constants
Public Const constLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Public Const constDigits = "0123456789"'* OLE Database Connections
Public oconnCSUtilities As OleDbConnection
'* SQL Database Connections
Public sconnCommonData As SqlConnection
Public sconnITProjectTracker As SqlConnection
Public sconnMZP As SqlConnection'* OLE Database Variables
Public ocmdProjectTracker As OleDbCommand
Public odrProjectTracker As OleDbDataReader'* SQL Database Variables
Public scmdAcctClient As SqlCommand
Public sdrAcctClient As SqlDataReader
Public scmdClientInfo As SqlCommand
Public sdrClientInfo As SqlDataReader
Public scmdClientTransactionFileTypes As SqlCommand
Public sdrClientTransactionFileTypes As SqlDataReader
Public scmdCompanyNameCompanyName As SqlCommand
Public sdrCompanyNameCompanyName As SqlDataReader
Public scmdDataLocks As SqlCommand
Public sdrDataLocks As SqlDataReader
Public scmdDataValidation As SqlCommand
Public sdrDataValidation As SqlDataReader
Public scmdJCLDSNOverride As SqlCommand
Public sdrJCLDSNOverride As SqlDataReader
Public scmdJCLSequence As SqlCommand
Public sdrJCLSequence As SqlDataReader
Public scmdLookupTable As SqlCommand
Public sdrLookupTable As SqlDataReader
Public scmdMasterFileCounts As SqlCommand
Public sdrMasterFileCounts As SqlDataReader
Public scmdMZPUser As SqlCommand
Public sdrMZPUser As SqlDataReader
Public scmdRecordTypes As SqlCommand
Public sdrRecordTypes As SqlDataReader
Public scmdReport As SqlCommand
Public sdrReport As SqlDataReader
Public scmdRequestData As SqlCommand
Public sdrRequestData As SqlDataReader
Public scmdTransactionFiles As SqlCommand
Public sdrTransactionFiles As SqlDataReader
Public scmdTransactionFileTypes As SqlCommand
Public sdrTransactionFileTypes As SqlDataReader
Public scmdUpdtSummCounts As SqlCommEyeYamFedUp wrote:
Public gblnSuperUser As Boolean Public gblnLogonOK As Boolean = False
Wow. Excellent security paradigm.
-
This guy is our point person for "process improvement". Guess how many years he's been coding? This is using VB.NET 2008. Great work don't ya think? :~ Let me know if you'd like to see more. :laugh:
'*********************************************************************
'* Module modCommon
'*
'* This module contains objects referenced by the entire application
'* for various purposes.
'*********************************************************************Imports System.Collections
Imports System.Data.OleDB
Imports System.Data.SqlClient
Imports System.IO
Imports System.Runtime.InteropServices.Marshal
Imports System.Text
Imports System.XmlModule modCommon
'* Constants
Public Const constLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Public Const constDigits = "0123456789"'* OLE Database Connections
Public oconnCSUtilities As OleDbConnection
'* SQL Database Connections
Public sconnCommonData As SqlConnection
Public sconnITProjectTracker As SqlConnection
Public sconnMZP As SqlConnection'* OLE Database Variables
Public ocmdProjectTracker As OleDbCommand
Public odrProjectTracker As OleDbDataReader'* SQL Database Variables
Public scmdAcctClient As SqlCommand
Public sdrAcctClient As SqlDataReader
Public scmdClientInfo As SqlCommand
Public sdrClientInfo As SqlDataReader
Public scmdClientTransactionFileTypes As SqlCommand
Public sdrClientTransactionFileTypes As SqlDataReader
Public scmdCompanyNameCompanyName As SqlCommand
Public sdrCompanyNameCompanyName As SqlDataReader
Public scmdDataLocks As SqlCommand
Public sdrDataLocks As SqlDataReader
Public scmdDataValidation As SqlCommand
Public sdrDataValidation As SqlDataReader
Public scmdJCLDSNOverride As SqlCommand
Public sdrJCLDSNOverride As SqlDataReader
Public scmdJCLSequence As SqlCommand
Public sdrJCLSequence As SqlDataReader
Public scmdLookupTable As SqlCommand
Public sdrLookupTable As SqlDataReader
Public scmdMasterFileCounts As SqlCommand
Public sdrMasterFileCounts As SqlDataReader
Public scmdMZPUser As SqlCommand
Public sdrMZPUser As SqlDataReader
Public scmdRecordTypes As SqlCommand
Public sdrRecordTypes As SqlDataReader
Public scmdReport As SqlCommand
Public sdrReport As SqlDataReader
Public scmdRequestData As SqlCommand
Public sdrRequestData As SqlDataReader
Public scmdTransactionFiles As SqlCommand
Public sdrTransactionFiles As SqlDataReader
Public scmdTransactionFileTypes As SqlCommand
Public sdrTransactionFileTypes As SqlDataReader
Public scmdUpdtSummCounts As SqlCommWhat's your problem with it? He used comments didn't he? ;)
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Are we sure it's not April's fool joke ? If not the guy must quit drugs and never (OK I really mean it. NEVER) left alone with a keyboard and a code editor. :thumbsdown:
Scary isn't it? And you wouldn't believe how many programs he's written like this. Your jaws would probably hit the ground at some of the stuff he does. And the really sad part. He's been controlling what and how things are done in the server world for years. And even sadder yet, the applications are terribly slow. One example is an application that takes 5 minutes to save a record. 5 minutes. I saw that and was beside myself.
-
What's your problem with it? He used comments didn't he? ;)
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
Pete O'Hanlon wrote:
He used comments didn't he?
Indeed! Even the polished version (
'*
). :-D Regards Thomaswww.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Programmer - an organism that turns coffee into software. -
Scary isn't it? And you wouldn't believe how many programs he's written like this. Your jaws would probably hit the ground at some of the stuff he does. And the really sad part. He's been controlling what and how things are done in the server world for years. And even sadder yet, the applications are terribly slow. One example is an application that takes 5 minutes to save a record. 5 minutes. I saw that and was beside myself.
5 minutes !!!! No Comments. :omg:
-
This is clearly copied from somewhere. You can see that from the nonsense prefixes. Either from the net or from this VB6 Win32 API code snippet tool from MS (forgot the exact name). Obviously this guy is a VB5/6 'programmer' who was under the earth for the last 10 years. Maybe he is coding for 30 years or so, but he is/was 'coding' exclusively in VB. He has no idea of OO programming, maybe he thinks VB5/6 IS OO... :doh: And regarding modules named modCommon or Globals or the like: they are just crying out loud that there's a significant problem with the systems overall architecture (which is also obvious from the module description). Regards Thomas
www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Programmer - an organism that turns coffee into software.Thomas Weller wrote:
He has no idea of OO programming, maybe he thinks VB5/6 IS OO
Blasphemy ... OK maybe you're right about VB5. But surely VB6 is a OO programming language.
Learn from the mistakes of others, you may not live long enough to make them all yourself.
-
Scary isn't it? And you wouldn't believe how many programs he's written like this. Your jaws would probably hit the ground at some of the stuff he does. And the really sad part. He's been controlling what and how things are done in the server world for years. And even sadder yet, the applications are terribly slow. One example is an application that takes 5 minutes to save a record. 5 minutes. I saw that and was beside myself.
Looks like the kind of code my last boss would write.... bizzarely enough he seemed to recite "Keep it Simple Stupid" and "Structured Coding Practices" and swore by Code Complete.... like using them as some kind of protective mantra would do any good for the abomination created. After opening his core business app to find most web pages with 750 line page load functions, dozens of nested conditions (Loop / If / Case anyone?) and all the variables declared at the page leve, which served up a range of pages based on seemingly arbitrary values... i asked for help. "It's in the code, read it." I did take away some fantastic coding advice: * Only one return per function (no short circuit conditions), leading to horrendous nesting. * Don't use Data Access layers, they're a waste of time, just use inline SQL and bind to a DataReader. * Don't create lots of objects, it's slow. * Don't break things into sub functions, it's harder to read and slower. * Don't use constants, it's hard to read the literal representation. * Don't use Serialization (Xml or otherwise - My understanding of serialization is object state persistence so I'm not sure how to persist without it). * Don't use wrappers, ever, as you will just end up with wrappers in wrappers. * Don't use Inheritance, it's complicated. * Don't use Interfaces, they're unescessary. * Don't make custom controls * Don't use design patterns, they just complicate things. * Don't use code generators, they generate slow / too much code. * Don't bother with resources until we need to globalize the app. * Don't make unit tests, waste of time, we can just user test it. Now, without any of the above application structures, and the functional requirement to add Multi Language support, change the database schema (slighltly), and add cross site functionality to each page.... Needless to say, the code debt was massive, and maintenance was a time sync of code + fix with no coherent strategy. Did i mention he was the CTO? :-D Regards
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Friday, April 3, 2009 6:58 AM
-
Looks like the kind of code my last boss would write.... bizzarely enough he seemed to recite "Keep it Simple Stupid" and "Structured Coding Practices" and swore by Code Complete.... like using them as some kind of protective mantra would do any good for the abomination created. After opening his core business app to find most web pages with 750 line page load functions, dozens of nested conditions (Loop / If / Case anyone?) and all the variables declared at the page leve, which served up a range of pages based on seemingly arbitrary values... i asked for help. "It's in the code, read it." I did take away some fantastic coding advice: * Only one return per function (no short circuit conditions), leading to horrendous nesting. * Don't use Data Access layers, they're a waste of time, just use inline SQL and bind to a DataReader. * Don't create lots of objects, it's slow. * Don't break things into sub functions, it's harder to read and slower. * Don't use constants, it's hard to read the literal representation. * Don't use Serialization (Xml or otherwise - My understanding of serialization is object state persistence so I'm not sure how to persist without it). * Don't use wrappers, ever, as you will just end up with wrappers in wrappers. * Don't use Inheritance, it's complicated. * Don't use Interfaces, they're unescessary. * Don't make custom controls * Don't use design patterns, they just complicate things. * Don't use code generators, they generate slow / too much code. * Don't bother with resources until we need to globalize the app. * Don't make unit tests, waste of time, we can just user test it. Now, without any of the above application structures, and the functional requirement to add Multi Language support, change the database schema (slighltly), and add cross site functionality to each page.... Needless to say, the code debt was massive, and maintenance was a time sync of code + fix with no coherent strategy. Did i mention he was the CTO? :-D Regards
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Friday, April 3, 2009 6:58 AM
Tristan Rhodes wrote:
* Only one return per function (no short circuit conditions), leading to horrendous nesting.
Not bad advice - just keep your functions short or you're in trouble.
Tristan Rhodes wrote:
* Don't use Data Access layers, they're a waste of time, just use inline SQL and bind to a DataReader.
COBOL
Tristan Rhodes wrote:
* Don't create lots of objects, it's slow.
COBOL
Tristan Rhodes wrote:
* Don't break things into sub functions, it's harder to read and slower.
COBOL
Tristan Rhodes wrote:
* Don't use constants, it's hard to read the literal representation.
COBOL
Tristan Rhodes wrote:
* Don't use wrappers, ever, as you will just end up with wrappers in wrappers.
COBOL
Tristan Rhodes wrote:
* Don't use Inheritance, it's complicated.
COBOL
Tristan Rhodes wrote:
* Don't use Interfaces, they're unescessary.
COBOL
Tristan Rhodes wrote:
* Don't use Serialization (Xml or otherwise - My understanding of serialization is object state persistence so I'm not sure how to persist without it).
COBOL
Tristan Rhodes wrote:
* Don't make custom controls
COBOL
Tristan Rhodes wrote:
* Don't use design patterns, they just complicate things.
COBOL
Tristan Rhodes wrote:
* Don't use code generators, they generate slow / too much code.
COBOL
Tristan Rhodes wrote:
* Don't bother with resources until we need to globalize the app.
COBOL
Tristan Rhodes wrote:
* Don't make unit tests, waste of time, we can just user test it.
COBOL
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Thomas Weller wrote:
He has no idea of OO programming, maybe he thinks VB5/6 IS OO
Blasphemy ... OK maybe you're right about VB5. But surely VB6 is a OO programming language.
Learn from the mistakes of others, you may not live long enough to make them all yourself.
BadKarma wrote:
But surely VB6 is a OO programming language.
Right. I forgot that VB6 has 'classes', so it must be OO... :-D Regards Thomas
www.thomas-weller.de Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Programmer - an organism that turns coffee into software. -
Tristan Rhodes wrote:
* Only one return per function (no short circuit conditions), leading to horrendous nesting.
Not bad advice - just keep your functions short or you're in trouble.
Tristan Rhodes wrote:
* Don't use Data Access layers, they're a waste of time, just use inline SQL and bind to a DataReader.
COBOL
Tristan Rhodes wrote:
* Don't create lots of objects, it's slow.
COBOL
Tristan Rhodes wrote:
* Don't break things into sub functions, it's harder to read and slower.
COBOL
Tristan Rhodes wrote:
* Don't use constants, it's hard to read the literal representation.
COBOL
Tristan Rhodes wrote:
* Don't use wrappers, ever, as you will just end up with wrappers in wrappers.
COBOL
Tristan Rhodes wrote:
* Don't use Inheritance, it's complicated.
COBOL
Tristan Rhodes wrote:
* Don't use Interfaces, they're unescessary.
COBOL
Tristan Rhodes wrote:
* Don't use Serialization (Xml or otherwise - My understanding of serialization is object state persistence so I'm not sure how to persist without it).
COBOL
Tristan Rhodes wrote:
* Don't make custom controls
COBOL
Tristan Rhodes wrote:
* Don't use design patterns, they just complicate things.
COBOL
Tristan Rhodes wrote:
* Don't use code generators, they generate slow / too much code.
COBOL
Tristan Rhodes wrote:
* Don't bother with resources until we need to globalize the app.
COBOL
Tristan Rhodes wrote:
* Don't make unit tests, waste of time, we can just user test it.
COBOL
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
Pete O'Hanlon wrote:
BOLOC
Fixed it!
Panic, Chaos, Destruction. My work here is done.
-
Pete O'Hanlon wrote:
BOLOC
Fixed it!
Panic, Chaos, Destruction. My work here is done.
Actually, I wrote COBOL so many times so somebody would pluralise the anagram.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Tristan Rhodes wrote:
* Only one return per function (no short circuit conditions), leading to horrendous nesting.
Not bad advice - just keep your functions short or you're in trouble.
Tristan Rhodes wrote:
* Don't use Data Access layers, they're a waste of time, just use inline SQL and bind to a DataReader.
COBOL
Tristan Rhodes wrote:
* Don't create lots of objects, it's slow.
COBOL
Tristan Rhodes wrote:
* Don't break things into sub functions, it's harder to read and slower.
COBOL
Tristan Rhodes wrote:
* Don't use constants, it's hard to read the literal representation.
COBOL
Tristan Rhodes wrote:
* Don't use wrappers, ever, as you will just end up with wrappers in wrappers.
COBOL
Tristan Rhodes wrote:
* Don't use Inheritance, it's complicated.
COBOL
Tristan Rhodes wrote:
* Don't use Interfaces, they're unescessary.
COBOL
Tristan Rhodes wrote:
* Don't use Serialization (Xml or otherwise - My understanding of serialization is object state persistence so I'm not sure how to persist without it).
COBOL
Tristan Rhodes wrote:
* Don't make custom controls
COBOL
Tristan Rhodes wrote:
* Don't use design patterns, they just complicate things.
COBOL
Tristan Rhodes wrote:
* Don't use code generators, they generate slow / too much code.
COBOL
Tristan Rhodes wrote:
* Don't bother with resources until we need to globalize the app.
COBOL
Tristan Rhodes wrote:
* Don't make unit tests, waste of time, we can just user test it.
COBOL
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
Pete O'Hanlon wrote:
Tristan Rhodes wrote: * Only one return per function (no short circuit conditions), leading to horrendous nesting. Not bad advice - just keep your functions short or you're in trouble.
I'd rather see this
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child == null)
return;MenuItemNode parent = child.Parent as MenuItemNode;
if (parent == null)
return;MenuItemNode swap = child.PrevNode as MenuItemNode;
if (swap == null)
return;//Code Here
Than This
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child != null)
{
MenuItemNode parent = child.Parent as MenuItemNode;if (parent != null) { MenuItemNode swap = child.PrevNode as MenuItemNode; if (swap != null) { //Code Here } }
}
I just find the second option ugly, and it really isn't any easier to read.
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Sunday, April 5, 2009 7:33 AM
-
Pete O'Hanlon wrote:
Tristan Rhodes wrote: * Only one return per function (no short circuit conditions), leading to horrendous nesting. Not bad advice - just keep your functions short or you're in trouble.
I'd rather see this
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child == null)
return;MenuItemNode parent = child.Parent as MenuItemNode;
if (parent == null)
return;MenuItemNode swap = child.PrevNode as MenuItemNode;
if (swap == null)
return;//Code Here
Than This
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child != null)
{
MenuItemNode parent = child.Parent as MenuItemNode;if (parent != null) { MenuItemNode swap = child.PrevNode as MenuItemNode; if (swap != null) { //Code Here } }
}
I just find the second option ugly, and it really isn't any easier to read.
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Sunday, April 5, 2009 7:33 AM
-
I think the same. But no one in my team thinks this way and they have managed to make this as a coding rule.
Will they let you get away with stuffing all the nested initialization/validation crap into a separate method? eg something like this (I know it needs a bit more fiddling to compile):
bool IntializeAndvalidate (out MenuItemNode child, out MenuItemNode parent, MenuItemNode swap)
{
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;if (child != null) { MenuItemNode parent = child.Parent as MenuItemNode; if (parent != null) { MenuItemNode swap = child.PrevNode as MenuItemNode; return (swap != null); } }
}
if (IntializeAndvalidate (child, parent, swap)
{
// do stuff
}Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
Pete O'Hanlon wrote:
Tristan Rhodes wrote: * Only one return per function (no short circuit conditions), leading to horrendous nesting. Not bad advice - just keep your functions short or you're in trouble.
I'd rather see this
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child == null)
return;MenuItemNode parent = child.Parent as MenuItemNode;
if (parent == null)
return;MenuItemNode swap = child.PrevNode as MenuItemNode;
if (swap == null)
return;//Code Here
Than This
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child != null)
{
MenuItemNode parent = child.Parent as MenuItemNode;if (parent != null) { MenuItemNode swap = child.PrevNode as MenuItemNode; if (swap != null) { //Code Here } }
}
I just find the second option ugly, and it really isn't any easier to read.
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Sunday, April 5, 2009 7:33 AM
The official solution to avoid multiple returns is throwing exceptions all over the place, especially on input validation. :)
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google - the quality and detail of your question reflects on the effectiveness of the help you are likely to get - use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
-
The official solution to avoid multiple returns is throwing exceptions all over the place, especially on input validation. :)
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google - the quality and detail of your question reflects on the effectiveness of the help you are likely to get - use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
-
Pete O'Hanlon wrote:
Tristan Rhodes wrote: * Only one return per function (no short circuit conditions), leading to horrendous nesting. Not bad advice - just keep your functions short or you're in trouble.
I'd rather see this
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child == null)
return;MenuItemNode parent = child.Parent as MenuItemNode;
if (parent == null)
return;MenuItemNode swap = child.PrevNode as MenuItemNode;
if (swap == null)
return;//Code Here
Than This
MenuItemNode child = tvMenu.SelectedNode as MenuItemNode;
if (child != null)
{
MenuItemNode parent = child.Parent as MenuItemNode;if (parent != null) { MenuItemNode swap = child.PrevNode as MenuItemNode; if (swap != null) { //Code Here } }
}
I just find the second option ugly, and it really isn't any easier to read.
------------------------------- Carrier Bags - 21st Century Tumbleweed.
modified on Sunday, April 5, 2009 7:33 AM
The 'one return per function' rule is a bit old school (early 90's :) ). IBM had it as a requirement when I was contracting there. It's not so much about style and readability as it is about introducing subtle bugs. If a maintenance programmer has to put some code in the function that has to take place before the function ends, he may place it right before the final 'return' near the end of the code block. And if he was working fast, or just working stupid he may not know of the other return points. Anyway, OOP guidelines of very short (7 +- 2) meaningful lines of code per method made this a moot point.