|
kmoorevs wrote: My first computer book ever was call "Sad Macs, Bombs, and Other Disasters". I
had inherited a powermac 6100 with system 7.5. I really enjoyed all the bomb
icons complete with an error number...how informative!
My favourite error was a pre-OS X Mac bomb-type message
"An unexpected error has occurred because an error has occurred".
Genius
|
|
|
|
|
I put in an error message during a late night debug session: "Oops, the XXX filter is corrupted. You must now sacrifice a black goat over the keyboard at midnight to restore settings". Then I forgot about it thinking it will never happen. This was my first real job as an embedded systems programmer and I was sure this would never hit. Right.
Somehow, the code made it to production. We got a call from tech support about 6 months later who did not find it amusing. My boss remembered it to the day I left the company.
|
|
|
|
|
It may not be the worst i have ever seen but it certainly is amusing. Something must have cocked up the Youtube server and this was the error message I got: "Sorry! Something went wrong. A team of highly trained monkeys has been dispatched to deal with the situation. If you see them, show them this information" and then there were some gibberish alpha-numeric strings about half a page long. I literally laughed out loud and posted it on my Facebook profile as well for my mates to have a laugh at. And guess what?? they did!....
|
|
|
|
|
Something bad happened
with a picture of little beasties munching on the innards of some computers
|
|
|
|
|
I remember reading about a program someone was debugging with message boxes, and he made them all tsundere, to ease the tedium.
Sadly, he shipped it without removing all of the messages. 2 weeks later, he dealt with a phonecall from a client who quoted: "I-It's not like I wanted to give you data, desuwa~, I just made to much!"
|
|
|
|
|
I was pushing the limits of an algorithm to find the limit of it's recursive processing. Then I put in a try/catch to gently and safely bring the app down when it failed. This isn't a bad error message, it's a failure in expectations. When it blew, it was supposed to write a formatted message in the catch block. When you get a stack overflow error/message, the app shuts down, no catch processing, no final executions, you're done, you're out. I thought try/catch was supposed to always catch failures.
|
|
|
|
|
My personal favorite, encountered only once while trying to open a project file in Borland C++Builder 6, it went something like;
"We were unable to process your request. Reason:
The window does not have scroll bars."
Yup, apparently scroll bars are an essential part of loading the file.
|
|
|
|
|
I remember a Win 95 message when connecting to a NT4 Server as you try to attach to a share.
Something along the lines: "I can't log you in, as you may have already logged off"
|
|
|
|
|
Worst I've come across was
"Don't understand why this code normally works, REALLY don't understand why it failed..."
|
|
|
|
|
I'm having bad day today as I stumbled across some VB code that's worse than usual coding horror. So I decided to relieve my mind by sharing those gems here.
If _Inspeksi = Inspeksi.JTM Then
Else
SQL = "SELECT ID_GI FROM AGARDU_INDUK WHERE NO_GARDU='" & DDGI2.ID & "'"
DT = New DataTable
DT = GlobalClassV2.Globals.Instance.ExecuteQuery(SQL)
SQL = ""
If DT.Rows.Count = 0 Then
Exit Function
End If
GINDUKR = DT.Rows(0)!ID_GI
SQL = "SELECT ID_GD FROM AGARDU_DISTRIBUSI WHERE NO_GARDU='" & GINDUK & "'"
DT = New DataTable
DT = GlobalClassV2.Globals.Instance.ExecuteQuery(SQL)
SQL = ""
If DT.Rows.Count = 0 Then
Exit Function
End If
GINDUK = DT.Rows(0)!ID_GD
End If
If GlobalClassV2.Globals.Instance.ExecuteQuery2(XSQL) = False Then
Throw New Exception("GAGAL")
Exit Function
End If
For iData As Integer = 1 To FG2.Rows.Count - 1
If IsDBNull(FG2.Item(iData, 0)) = True Then
Else
DLInsert.InsertInspeksiJTMTR2_DETIL_NEWEST(False, pIDInspeksi, "R", dtTglPeriksa.Text, _
CG.CheckNull(FG2.Item(iData, 0)), FG2.Item(iData, 8), "", CG.CheckNullNum(FG2.Item(iData, 13)), "", Split(CG.CheckNull(FG2.Item(iData, 2)), " - ")(0), _
Split(CG.CheckNull(FG2.Item(iData, 3)), " - ")(0), "", "", _
Split(CG.CheckNull(FG2.Item(iData, 4)), " - ")(0), CG.CheckNull(FG2.Item(iData, 5)), Split(CG.CheckNull(FG2.Item(iData, 7)), " - ")(0), _
CG.CheckNull(FG2.Item(iData, 11)), "", Globals.Instance.EncodeDate(DateTime.Parse(FG2.Item(iData, 12))), _
Split(CG.CheckNull(FG2.Item(iData, 13)), " - ")(0), CG.CheckNull(FG2.Item(iData, 5)), CG.CheckNull(FG2.Item(iData, 6)), _
CG.CheckNull(FG2.Item(iData, 1)), Split(CG.CheckNull(FG2.Item(iData, 14)), " - ")(0), Split(CG.CheckNull(FG2.Item(iData, 15)), " - ")(0), _
CG.CheckNull(FG2.Item(iData, 17)), Split(CG.CheckNull(FG2.Item(iData, 18)), " - ")(0), FG2.Item(iData, 9), FG2.Item(iData, 10))
End If
Next
Excuse me for my improper grammar and typos.
It's because English is my primary language, not my first language.
My first languages are C# and Java.
VB, ASP, JS, PHP and SQL are my second language.
Indonesian came as my third language.
My fourth language? I'm still creating it, I'll let you know when it's done!
|
|
|
|
|
Very inconsistent! He'd better write:
If GlobalClassV2.Globals.Instance.ExecuteQuery2(XSQL) = True Then
Else
Throw New Exception("GAGAL")
Exit Function
End If
And I like that gaga exception ("gagal" means "failed", doesn't it?) before the call to Exit Function ...
|
|
|
|
|
'GAGAL' sonds more like something you could encounter in Star Wars, something with long teeth and claws
And from the clouds a mighty voice spoke: "Smile and be happy, for it could come worse!"
And I smiled and was happy And it came worse.
|
|
|
|
|
Let Me Gagal That Fer Ya.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
You have to do inspeksi ahead...
I like inspeksi...
(yes|no|maybe)*
|
|
|
|
|
|
In fairness ... the problem is not that it's VB, it's that he's a crap programmer!
|
|
|
|
|
|
I just asked a coworker where in TFS the source code is for a utility that is heavily used in our department. He said it wasn't, but he'd email me the source code.
It is a Windows Forms application and there are several forms, but there is one primary form. I looked at the VB (.Net, thankfully) code for that form. I wish I hadn't...
21,662 lines of code, just for that one form.
Now, I just have to figure out what Form2, Form3, Form4, Form5, Form6, and Form7 do.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
10 methods?
(yes|no|maybe)*
|
|
|
|
|
Wow, someone who can write that much code in a single Form must be really good!
Or perhaps 21,662 is his favourite number? Kind of like his personal 42
It's an OO world.
public class Naerling : Lazy<Person>{}
|
|
|
|
|
Public Class MainForm
Inherits Form
Public Sub MainForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
|
Ouch. I use lots of white space, but not that much. I actually have very strict guidelines for how I use whitespace in my code (in VB.Net, I used 0-2 blank lines between things, depending on the situation).
And I actually make very obvious comments in my code. To me, comments are not only to describe the code, but they help me read the code faster, which means comments and whitespace should be both very consistent and should describe each section of code. So I might have:
Public Class Animal
#Region "Constants"
Private Const HIGHLANDER As Integer = 1
Private Const BUNCH_MIN As Integer = 10
Private Const COUPLE_NAME As String = "couple"
Private Const BUNCH_NAME As String = "bunch"
Private Const TEMPLATE_DESCRIPTION_SINGLE As String = "There is one baby {1}."
Private Const TEMPLATE_DESCRIPTION_MANY As String = "There are a {0} of baby {1}s."
#End Region
#Region "Properties"
Public Property AnimalName As String
#End Region
#Region "Methods"
Public Function GetChildrenDescription(ByVal count As Integer) As String
Dim description As String
Dim countWord As String
If count = HIGHLANDER Then
description = String.Format(TEMPLATE_DESCRIPTION_SINGLE, Me.AnimalName)
Else
If count >= BUNCH_MIN Then
countWord = BUNCH_NAME
Else
countWord = COUPLE_NAME
End If
description = String.Format(TEMPLATE_DESCRIPTION_MANY, countWord, Me.AnimalName)
End If
Return description
End Function
#End Region
End Class
So even though "variables" is obvious, I still keep it there because it allows me to read through code faster (e.g., by skipping over the section with variables). And I don't comment the contants section because I make constants so descriptive that I don't comment them individually and having the region "Constants" acts as a comment for the entire group of constants. I also like XML comments for large chunks of code (methods, classes) because that gives me Intellisense and Visual Studio collapses them for me.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
That's looking pretty decent. I must admit I never use Constants myself. But looking at this they are actually pretty handy.
My code would say If count = 1 Then... And I often find myself commenting what 1 is or why we would have it.
I am also a big fan of XML comments. Especially when I am developing some Class Library for my company to use (and I do that from time to time). I wouldn't put any of the comments in the GetChildrenDescription Method though. It looks all pretty self explanatory to me
It's an OO world.
public class Naerling : Lazy<Person>{}
|
|
|
|
|
Yeah, constants are nice for refactoring. It is easy enough to search the code for "10" and change it, but you may not want to change every "10" and there may be a bunch of them. Assigning it to a constant allows you to change it in one place.
For some things that are unlikely to ever change (such as "HIGHLANDER"), I might just use a magic variable (i.e., no consant), and I have no problem with code that does that in those cases. Heck, I even use magic variables when I'm just lazy, but will sometimes go back later to convert them to constants or properties or whatever is appropriate. Really they're just one of those "nice to have" things that make others smile when they see your code (or indeed when you see your own code months after you write it), because it's so effortless to maintain. By doing these good practice things as often as possible (even when they are not strictly necessary), I find that they have become instinct and it's not hard at all to do things the right way most of the time. Good practice practice practically makes perfect good practice.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|