Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. Bool expression??

Bool expression??

Scheduled Pinned Locked Moved The Weird and The Wonderful
csharplinqfunctionalquestion
24 Posts 13 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A AEternal

    It's not THAT horrible. Yes, it's not exactly elegant, but sometimes this is done to make things clearer to other coders (especially less-experienced ones).

    C Offline
    C Offline
    codemunch
    wrote on last edited by
    #9

    It IS that horrible when you join a project and the other "experienced" consultant is writing a pile of redundant crap like that: if(x == true) { control.Enabled = true; } else { control.Enabled = false; } The above adds an extra comparison operation in addition to being ugly. Besides, as someone already mentioned, How will the juniors ever progress? Forgiveable for the OP though :) The project i joined has a metric buttload of that garbage. Even worse is these guys "architected" classes without methods (can you say pre-OOP structures boys & girls?) and then created a function library (which they called a "fascade" and is NOTHING like the fascade design pattern) where you pass in an instance of this methodless "class" to the method of a fascade class to do work on it (i.e. persist it). The reasoning? They thought adding methods to the class would make it too slow. It has been a rollercoaster of emoticons. :omg: :wtf: :mad: :sigh: :(( :rolleyes: e.g. class Person { public string FirstName; public string LastName; } class PersonFascade { public void InsertPerson(Person p) { /* do stuff */ } public void UpdatePerson(Person p) { /* do stuff */ } public void DeletePerson(Person p) { /* do stuff */ } }

    T 1 Reply Last reply
    0
    • B BadKarma

      The senior programmer could place comments like this:

      if (x == true)
        return true;
      else
        return false;
      
      //  the previous snippet could be replaced with
      //  return x;
      //  but i have chosen not to use this so that junior-programmers
      //  can understand how two different values can be returned by one single function
      //  
      //  To other senior programmers. Please leave the previous snippet or replace it by
      //  another snippet that would clarify the problem even better
      

      codito ergo sum

      P Offline
      P Offline
      PIEBALDconsult
      wrote on last edited by
      #10

      Then it should be

      return x ;

      // If I ever catch any of you writing it as
      //
      // if (x == true)
      // return true;
      // else
      // return false;
      //
      // I'll have you tied to an anthill and covered in honey!

      V 1 Reply Last reply
      0
      • A AEternal

        It's not THAT horrible. Yes, it's not exactly elegant, but sometimes this is done to make things clearer to other coders (especially less-experienced ones).

        E Offline
        E Offline
        Erich Ledesma
        wrote on last edited by
        #11

        Great point. Never thought of it that way. But it wasn't a sennior programmer making things clearer, nor a junnior one making misstakes. It's just some guy who has been programming for a while and I guess has no clue how boolean expressions work. It's started on C# by the way. Original code

        x => if (SomeBoolMeth(x) == true) return true; return false ;

        If you were a professor and find this in some test, not from a basic course, what would you do?? Again: Great point!!

        1 Reply Last reply
        0
        • E Erich Ledesma

          I found this code somewhere:

          ...
          if (x == true)
          return true ;
          else
          return false ;

          Actual code was the body of a C# 3 lambda expression. Anyway, horrible.

          S Offline
          S Offline
          Sean Williams 0
          wrote on last edited by
          #12

          what if x was a nullable boolean ? static bool getX(Nullable x) { if(x==true) { return true; } else { return false; } }

          S 1 Reply Last reply
          0
          • S Sean Williams 0

            what if x was a nullable boolean ? static bool getX(Nullable x) { if(x==true) { return true; } else { return false; } }

            S Offline
            S Offline
            Sean Williams 0
            wrote on last edited by
            #13

            that didn't quite come out right ( first post :P ) was supposed to be a bool after the Nullable of course static bool getX(Nullable x)

            S 1 Reply Last reply
            0
            • S Sean Williams 0

              that didn't quite come out right ( first post :P ) was supposed to be a bool after the Nullable of course static bool getX(Nullable x)

              S Offline
              S Offline
              Sean Williams 0
              wrote on last edited by
              #14

              uggh, ok last attempt I am sure you follow .. ;)

              Member 4364689 wrote:

              static bool getX(Nullable<bool> x)

              D 1 Reply Last reply
              0
              • C codemunch

                It IS that horrible when you join a project and the other "experienced" consultant is writing a pile of redundant crap like that: if(x == true) { control.Enabled = true; } else { control.Enabled = false; } The above adds an extra comparison operation in addition to being ugly. Besides, as someone already mentioned, How will the juniors ever progress? Forgiveable for the OP though :) The project i joined has a metric buttload of that garbage. Even worse is these guys "architected" classes without methods (can you say pre-OOP structures boys & girls?) and then created a function library (which they called a "fascade" and is NOTHING like the fascade design pattern) where you pass in an instance of this methodless "class" to the method of a fascade class to do work on it (i.e. persist it). The reasoning? They thought adding methods to the class would make it too slow. It has been a rollercoaster of emoticons. :omg: :wtf: :mad: :sigh: :(( :rolleyes: e.g. class Person { public string FirstName; public string LastName; } class PersonFascade { public void InsertPerson(Person p) { /* do stuff */ } public void UpdatePerson(Person p) { /* do stuff */ } public void DeletePerson(Person p) { /* do stuff */ } }

                T Offline
                T Offline
                Tristan Rhodes
                wrote on last edited by
                #15

                codemunch wrote:

                class Person { public string FirstName; public string LastName; } class PersonFascade { public void InsertPerson(Person p) { /* do stuff */ } public void UpdatePerson(Person p) { /* do stuff */ } public void DeletePerson(Person p) { /* do stuff */ } }

                Isn't your example standard practice? Person = Business Object PersonFacade = Database Wrapper You get exactly the same when you generate any DB Mapping using an ORM system, and i see nothing wrong with it. I always operate on the aim to separate data structure from functionality. That said, the naming conventions are misleading.

                ------------------------------- Carrier Bags - 21st Century Tumbleweed.

                C 1 Reply Last reply
                0
                • A AEternal

                  It's not THAT horrible. Yes, it's not exactly elegant, but sometimes this is done to make things clearer to other coders (especially less-experienced ones).

                  D Offline
                  D Offline
                  dojohansen
                  wrote on last edited by
                  #16

                  Either you've understood that "(x < 5)" is a boolean expression every bit as much as the boolean constants "true" and "false", or you haven't. There's nothing in between. The code makes it look as if the condition is somehow not a boolean expression, and therefore highlights the author's lack of understanding, of something quite fundamental, and therefore deserves to be on display as a coding horror, in my opinion. For some reason I see this done a lot with ternaries in C#: return (s == "toto"? true : false); Unfortunately proper use is less commonly seen, such as return (row != null? (int)row["count"] : -1);

                  1 Reply Last reply
                  0
                  • S Sean Williams 0

                    uggh, ok last attempt I am sure you follow .. ;)

                    Member 4364689 wrote:

                    static bool getX(Nullable<bool> x)

                    D Offline
                    D Offline
                    dojohansen
                    wrote on last edited by
                    #17

                    It still makes no difference. An if condition is a boolean expression and can only evaluate to true or false, regardless of whether the equals operator is working with operands that are structures (such as Nullable) or objects (such as the object == true mentioned above) or anything else. It is of course true that the expression "x" cannot in general be known to be equivalent to "x == true", but you can ALWAYS rewrite if (x == true) return true; else return false; to just return (x == true); And of course, if x is in fact a bool, it would be clearer to simply return x.

                    1 Reply Last reply
                    0
                    • T Tristan Rhodes

                      codemunch wrote:

                      class Person { public string FirstName; public string LastName; } class PersonFascade { public void InsertPerson(Person p) { /* do stuff */ } public void UpdatePerson(Person p) { /* do stuff */ } public void DeletePerson(Person p) { /* do stuff */ } }

                      Isn't your example standard practice? Person = Business Object PersonFacade = Database Wrapper You get exactly the same when you generate any DB Mapping using an ORM system, and i see nothing wrong with it. I always operate on the aim to separate data structure from functionality. That said, the naming conventions are misleading.

                      ------------------------------- Carrier Bags - 21st Century Tumbleweed.

                      C Offline
                      C Offline
                      codemunch
                      wrote on last edited by
                      #18

                      Well, the example wasn't too detailed but as-is it took OOP and bastardized it into a function library (PersonFacade) + simple data structures (Person). You do want your persistance layer (data) to be separate but working at the business layer (often from a different class) and calling data layer specific persistance methods is ugly not to mention a pain in the ass to manage. A much cleaner solution is to have a Save() method (and depending on your scheme, a Delete()method) which then passes itself to a data layer so in your business & UI logic you don't need to call data layer specific methods residing in a completely different class. The business object takes care of itself and your code is better organized. The data layer could look like the "facade" thing or could be a smarter all-encompasing gate keeper.

                      1 Reply Last reply
                      0
                      • B BadKarma

                        The senior programmer could place comments like this:

                        if (x == true)
                          return true;
                        else
                          return false;
                        
                        //  the previous snippet could be replaced with
                        //  return x;
                        //  but i have chosen not to use this so that junior-programmers
                        //  can understand how two different values can be returned by one single function
                        //  
                        //  To other senior programmers. Please leave the previous snippet or replace it by
                        //  another snippet that would clarify the problem even better
                        

                        codito ergo sum

                        M Offline
                        M Offline
                        Michael P Scherer
                        wrote on last edited by
                        #19

                        or he could just save the time it takes to write that long, verbose comment and just write return x;

                        SoCoder - CAT Program

                        B 1 Reply Last reply
                        0
                        • M Michael P Scherer

                          or he could just save the time it takes to write that long, verbose comment and just write return x;

                          SoCoder - CAT Program

                          B Offline
                          B Offline
                          BadKarma
                          wrote on last edited by
                          #20

                          No time or effort should be spared in the process of education of the younger generation. Even better would be.

                          return (x == true) ? true : false;
                          

                          ;P

                          codito ergo sum

                          V 1 Reply Last reply
                          0
                          • P PIEBALDconsult

                            Then it should be

                            return x ;

                            // If I ever catch any of you writing it as
                            //
                            // if (x == true)
                            // return true;
                            // else
                            // return false;
                            //
                            // I'll have you tied to an anthill and covered in honey!

                            V Offline
                            V Offline
                            Vasudevan Deepak Kumar
                            wrote on last edited by
                            #21

                            PIEBALDconsult wrote:

                            I'll have you tied to an anthill and covered in honey!

                            Cute. This should get a Vote of '5'.

                            Vasudevan Deepak Kumar Personal Homepage
                            Tech Gossips
                            A pessimist sees only the dark side of the clouds, and mopes; a philosopher sees both sides, and shrugs; an optimist doesn't see the clouds at all - he's walking on them. --Leonard Louis Levinson

                            1 Reply Last reply
                            0
                            • B BadKarma

                              No time or effort should be spared in the process of education of the younger generation. Even better would be.

                              return (x == true) ? true : false;
                              

                              ;P

                              codito ergo sum

                              V Offline
                              V Offline
                              Vasudevan Deepak Kumar
                              wrote on last edited by
                              #22

                              With longer conditions and expressions, ternary operator becomes tedious to debug. X|

                              Vasudevan Deepak Kumar Personal Homepage
                              Tech Gossips
                              A pessimist sees only the dark side of the clouds, and mopes; a philosopher sees both sides, and shrugs; an optimist doesn't see the clouds at all - he's walking on them. --Leonard Louis Levinson

                              1 Reply Last reply
                              0
                              • E Erich Ledesma

                                I found this code somewhere:

                                ...
                                if (x == true)
                                return true ;
                                else
                                return false ;

                                Actual code was the body of a C# 3 lambda expression. Anyway, horrible.

                                P Offline
                                P Offline
                                Paul Conrad
                                wrote on last edited by
                                #23

                                :eek: So much for just doing a return x==true; If x is a bool, then just a simple return of x will work :-\

                                "I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon

                                1 Reply Last reply
                                0
                                • E Erich Ledesma

                                  I found this code somewhere:

                                  ...
                                  if (x == true)
                                  return true ;
                                  else
                                  return false ;

                                  Actual code was the body of a C# 3 lambda expression. Anyway, horrible.

                                  P Offline
                                  P Offline
                                  PIEBALDconsult
                                  wrote on last edited by
                                  #24

                                  I considered creating a new thread for this, but (obviously) decided not to. I spent yesterday at the "Heroes happen {here}" event (in Phoenix) and most of the demoes in the "developers' track" was presented by a "developer evangelist", and it seemed like every one of his methods that returned a bool was written in that form. :mad:

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • World
                                  • Users
                                  • Groups