• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

When is it okay to go against the Style Guide?

 
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm trying to apply the JavaRanch Style Guide to all my future coding but I'm having a problem understanding how to not use break in the code below. The other loops are pretty ugly in this scenario, and not using break to break out of the foreach loop is inefficient and might create faulty results.

 
Marshal
Posts: 79239
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It is never OK to go against the style guide, but it is OK to choose a different style guide.
When you get a job, you will (probably) be given a style guide by your employer, which you must adhere to. Now you are on the Ranch, you are permitted to choose any style guide.

The JavaRanch style guide follows structured programming, which was introduced in the late 1960s following two seminal papers by Böhm and Jacopini (Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules) and Dijkstra (Goto considered Harmful), eschewing break and continue. It is always possible to avoid break and continue, except after switch. Interestingly enough, object-oriented programming was also invented in the late 1960s.

Let’s have a look at your method.
Using ints as return values to denote type of login is very old-fashioned, the sort of thing that was cutting-edge in C in 1973! If you are using an int, it would denote how many people are logged in. I would have thought you create a LoggedIn enum with the different values representing whatever 0, 1, 2 represent in the current version. You do not say how your parseLine methods return a Matcher, nor how they would be null. I don’t like returning null, because you might try to use the null and suffer a NullPointerException. And currentPageCache is an ArrayList<String>. Armed with this information, let’s see whether we can get rid of the breaks.Why are you returning a Matcher object and not using it? That seems very strange.

But we have got rid of the breaks.

A lot of people would disagree and say there is nothing wrong withbreak.
 
Bartender
Posts: 6109
6
Android IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Campbell Ritchie wrote:It is never OK to go against the style guide



I'm afraid I'm gonna have to go ahead and disagree with you there. I would say it's okay to go against the style guide when doing so increases readability.
 
Nick Singh
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Why are you returning a Matcher object and not using it? That seems very strange.


The parseLine(String a, String b) method takes an html line (param1) and attempts to match param2 against it. It's used throughout the script and not just here. The reason it returns a Matcher and not a boolean is because many of the other methods will need to use the Matcher objects methods, it just happens that in this case, whether a match was made or not determines whether the user is logged in or logged out.

And for the null returns, I'm a bit of a greenhorn, totally missed how that would be a problem till you mentioned it. That is against the style guide too! :P

Also, the only reason I never used enums is because I have no experience with them.

for (Iterator<String> it = currentPageCache.iterator(); it.hasNext() && returnVal == 2;/*empty*/)


Ha, never thought of that
 
Water proof donuts! Eat them while reading this tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic