Originally posted by Spacecadet
View Post
- Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
- Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!
Boolean Algebra
Collapse
X
-
The bigger problem though is that you described what you wrote as a business rule. The fact is it isn't. The arguably larger issue is that statement1 through statement4 may or may not be executed in all cases. That depends on the language. This could have unintended consequences. -
But how else would you write it? It depends on the language constructs available and whether the language short circuits.Originally posted by Jaws View PostClearly that's a mistake but it should be pretty obvious when (if) they come to test it.
What I can't stand seeing is lots of nested if statements when a single one could be used (eg if(object != null) { if (object.Item == "Test"); }). I've seen that kind of thing so many times from supposedly degree educated developers, pure lazyness.
In Cobol for example:-
if object not null and object.item = "Test" will be fine.
In C# it'll throw an exception in the case where the object is null because it doesn't short circuit. Same is true in VB. Of course in VB.NET you could:-
if object isnot nothing andalso object.item = "Test"I imagine there is a similar construct in C#
The construct you described is not necessarily laziness, it may be the only option that was available. It may be that the implementer felt it made it blindingly obvious.Comment
-
.NET is a frameworkOriginally posted by doodab View PostOf course, in it's entirety it's more than just a language, but then so is Java.
VB.NET and C# are languagesCoffee's for closersComment
-
In C# boolean expression evaluation is short circuited.Originally posted by ASB View PostBut how else would you write it? It depends on the language constructs available and whether the language short circuits.
In Cobol for example:-
if object not null and object.item = "Test" will be fine.
In C# it'll throw an exception in the case where the object is null because it doesn't short circuit. Same is true in VB. Of course in VB.NET you could:-
if object isnot nothing andalso object.item = "Test"I imagine there is a similar construct in C#
The construct you described is not necessarily laziness, it may be the only option that was available. It may be that the implementer felt it made it blindingly obvious.
if (object != null && object.test == "Item") // would work
If there are 5-6 levels of nesting in a method due to things like this, any gains from making things obvious are lost as far as I'm concerned.
I'm very forgiving with legacy code and last minute bug fixes, it's just when newly written code comes to me in that format that it bothers me.Comment
-
Fair enough. I was under the impression it wasn't short circuited (i.e. same as vb.net), obviously wrongly.Originally posted by Jaws View PostIn C# boolean expression evaluation is short circuited.
if (object != null && object.test == "Item") // would work
Quite agree.Originally posted by Jaws View PostIf there are 5-6 levels of nesting in a method due to things like this, any gains from making things obvious are lost as far as I'm concerned.
I did once see something very like:-
Select Case True
Case SomeObject isnot nothing
if Someopbject.Property = "xyz"
do something
end if
end select
A novel approach if nothing else.Comment
-
Originally posted by meOf course, in it's entirety it's more than just a language, but then so is Java.Yes, I know. If you had read more than one line of my post you would know I know, and you would also know that part of the .Net framework is a language.Originally posted by Spacecadet View Post.NET is a framework
VB.NET and C# are languages
Originally posted by meThe high level languages aren't strictly part of .Net, as you so rightly pointed out, but many people treat the term as a synonym for either C# or VB (but rarely both).Anyway, to appease the pedants among you I have edited the original post.Originally posted by meThe CIL (common intermediate language for the google-challenged), which is both a language and part of .Net, is what I would call a modern OO langauge, i.e. it's object oriented, supports exceptions and doesn't require the developer to be responsible for memory management.
The point I was making is that API functions that return null to indicate an exceptional condition are a carry over from days of yore and have no place in a modern object oriented whateverthe****youwantocallit that supports exceptions and takes care of memory management automagically.Last edited by doodab; 9 June 2010, 11:34.While you're waiting, read the free novel we sent you. It's a Spanish story about a guy named 'Manual.'Comment
-
Originally posted by doodab View Post...300 classes all of which should probably be named NullPointerExceptionFactory
In many cases the Null Object pattern is appropriate. (Here's a GoF-style description.)Originally posted by doodab View PostOf course, in an ideal world I would tell the numpty to wrap whatever API is returning null objects in a factory class that throws an exception, as personally I think that functions that require checking their return values for null have no place in a modern OO language.Comment
-
Perhaps some future dynamically typed language might feature a new concept of null as an object that implements any method call as a default "do nothing" action, thus forcing people to use exceptions to signal errors. Or at least getting rid of all those spurious checks for null references in return values.Originally posted by NickFitz View PostIn many cases the Null Object pattern is appropriate. (Here's a GoF-style description.)While you're waiting, read the free novel we sent you. It's a Spanish story about a guy named 'Manual.'Comment
-
once I saw:Originally posted by ASB View PostI did once see something very like:-
Select Case True
Case SomeObject isnot nothing
if Someopbject.Property = "xyz"
do something
end if
end select
Code:For i = 1 To 2 If i = 1 Then DoA() End If If i = 2 Then DoB() End If Next i
Comment
-
That deserves a prize of some sortOriginally posted by thunderlizard View Postonce I saw:
Code:For i = 1 To 2 If i = 1 Then DoA() End If If i = 2 Then DoB() End If Next i
+50 Xeno Geek Points
Come back Toolpusher, scotspine, Voodooflux.Pogle
As for the rest of you - DILLIGAF
Purveyor of fine quality smut since 2005
CUK Olympic University Challenge Champions 2010/2012
Comment
- Home
- News & Features
- First Timers
- IR35 / S660 / BN66
- Employee Benefit Trusts
- Agency Workers Regulations
- MSC Legislation
- Limited Companies
- Dividends
- Umbrella Company
- VAT / Flat Rate VAT
- Job News & Guides
- Money News & Guides
- Guide to Contracts
- Successful Contracting
- Contracting Overseas
- Contractor Calculators
- MVL
- Contractor Expenses
Advertisers


Comment