Style Rules I
Style is important Everyone agrees that good style is important –Everyone agrees on most of the essentials –But some people have “religious wars” over style –It’s the subtle points that get people really upset Subtle points mostly aren’t very important The essential points make a clear difference, so these are the ones people can agree on...Just like a lot of other things in life!
About the book This book is a team effort by many good programmers, not just one person’s opinions The rules have been widely distributed and commented upon The rules reflect widespread and accepted practices And no, I don’t agree with everything in the book!
Rule 1 Adhere to the style of the original Consistent style is very important Most times, you will enter an ongoing project, with established style rules –Follow them even if you don’t like them –Don’t try to establish “better” style rules It won’t work anyway There may be reasons you don’t know about If a project has mixed styles with no consistency, you might try to get people to agree on one
Rule 3 Do it right the first time You’re working on a large project, so you use good style......but you need a tool to help you do one little job, so you slap it together quickly Guess which program will be around longer and used by more people?
The “broken window” theory In inner cities, some buildings are beautiful and clean, while others are rotting hulks. Why? Researchers in the field of crime and urban decay discovered a fascinating trigger mechanism, one that very quickly turns a clean, intact, inhabited building into a smashed and abandoned derelict. A broken window.
From “The Pragmatic Programmer” Don't leave “broken windows” (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered. If there is insufficient time to fix it properly, then board it up. Perhaps you can comment out the offending code, or display a "Not Implemented" message, or substitute dummy data instead. Take some action to prevent further damage and to show that you're on top of the situation.
Rule 5 Indent nested code Always indent statements that are nested inside (under the control of) another statement if (itemCost <= bankBalance) { writeCheck(itemCost); bankBalance = bankBalance - itemCost; } while (seconds > 0) { System.out.print(seconds + "..."); seconds = seconds - 1; }
Indenting particular statements Java has several kinds of statements, and the book tells how to indent each The general form is usually like this: –controlling-statement { nested-statements } Sometimes I violate good style on these slides because I have to make it all fit!
How much should you indent? If you indent too little, the indentation is harder to see and doesn’t help very much If you indent too much, deeply nested code gets pushed too far to the right In general, 2 to 4 spaces seems about right –The book suggests 2 spaces –BlueJ’s default is 4 spaces Just pick a number and stay with it
Rule 6 Break up long lines Scrolling a window horizontally is a pain! When you print on standard paper, long lines are either cut off or wrap in bad places I have long used a 72 character limit Some editors will show you a limit line The book provides good advice on how to break up long lines (read it!)
Rule 8 Don’t use “hard” tabs Once upon a time, you could depend on tab stops every eight character positions Today, every editor has its own idea of where and how to set tab stops If you change editors, your nice indentation gets ruined –It’s worse if you use both tabs and spaces –I have learned this one the hard way!
“Soft” tabs Some editors (the good ones) will let you set a preference so that, when you type a tab, the editor automatically uses the right number of spaces instead –This is what is called a “soft” tab BlueJ uses exclusively soft tabs (as of 1.1.4) –Use tabs all you like in BlueJ –Remember that most editors don’t do this automatically
What about the rules I skipped? Those rules are important, too I’m skipping around for a variety of reasons: –Rules 2 and 4 will make more sense later –Rule 7 has too much detail to talk about right now (but it’s a good rule!) I’ll try to talk about every rule in class This is a good book, worth reading several times
The End