Poll Summary

Number Of Votes Cast
68,307
Overall Acceptance Rates
Choice Number Percentage
Yes 44,152 65%
No 15,167 22%
Undecided 8,988 13%

Servlets and JSPsYesNoUndecidedVotes
A Web App Framework - WEB4J 62% 18% 20% 1452
Always maintain HttpSessions 75% 15% 9% 138
Beware multilingual submit buttons 64% 20% 17% 127
Beware of common hacks 85% 8% 7% 101
Beware of custom cookies 81% 7% 12% 89
Beware of doubly escaped ampersands 76% 14% 10% 71
Beware of URL rewriting 62% 23% 15% 146
Choose form validation style carefully 73% 17% 10% 115
Consider Controllers for redirects 50% 24% 26% 34
Do not synchronize doGet, doPost 69% 20% 11% 725
Emit flexible URLs 74% 9% 17% 54
Escape special characters 61% 28% 11% 827
Forward versus redirect 72% 14% 14% 585
JSPs should contain only presentation logic 88% 6% 6% 218
Loss of data during restart 66% 15% 20% 82
Manage sessions closely 80% 11% 9% 147
Measure web app performance 87% 7% 7% 166
Minimize site response time 74% 13% 12% 89
Parse parameters into domain objects 32% 36% 32% 22
Pre-populate forms 47% 35% 18% 91
Prefer JSTL tags 74% 15% 11% 192
Prefer UTF-8 in all layers 80% 10% 11% 123
Prevent self-linking 40% 52% 8% 25
Refactor large Controllers 76% 12% 12% 17
Repel invalid requests 74% 13% 13% 23
Reuse login page for errors 71% 19% 11% 161
Send trouble-ticket emails 57% 14% 29% 21
Serve binary content 57% 23% 20% 60
Session-scope objects often Serializable 75% 12% 14% 103
Struts seems mediocre 44% 38% 19% 199
Thread-safety in web apps 75% 16% 9% 285
Understand details of FORM tags 83% 7% 10% 29
Use Cascading Style Sheets 81% 12% 6% 81
Use extensions for fine-grained security 55% 32% 12% 40
Use Model-View-Controller framework 90% 3% 7% 291
Use templates to standardize layout 55% 37% 8% 38
Validate email addresses 44% 41% 15% 362
Validate generated HTML 73% 15% 12% 279
Web usability guidelines 85% 3% 12% 34
Wrap file upload requests 47% 27% 25% 59
SwingYesNoUndecidedVotes
A Swing App - StocksMonitor 65% 17% 18% 312
Actions 69% 21% 10% 87
Align menu items 67% 20% 13% 86
Change theme 69% 17% 14% 139
Consider JGoodies Forms for layouts 75% 9% 16% 91
Don't bury dialogs 61% 17% 22% 23
Don't subclass JDialog or JFrame 29% 40% 31% 130
Filter table rows 53% 40% 7% 15
Input dialogs 54% 23% 23% 35
Launch other applications 77% 23% 0% 22
Layout Managers 64% 24% 12% 193
Look and Feel guidelines 85% 9% 6% 47
Minimal Swing application 67% 17% 17% 84
Observers and listeners 46% 29% 25% 148
Preferences dialogs 41% 19% 41% 27
Provide an uncaught exception handler 59% 22% 20% 92
Render table cells 68% 14% 17% 257
Sort table rows 47% 28% 25% 60
Splash screen 58% 30% 12% 278
Standardized dialogs 54% 33% 12% 24
Swing in general 76% 9% 15% 34
Swing threads 58% 23% 19% 139
Swing utility tasks 80% 14% 6% 35
Timers 32% 52% 16% 114
Using JavaHelp 55% 28% 17% 83
Using preferences 45% 32% 23% 62
Verify input with Model Objects 70% 20% 10% 10
Verify input with regular expressions 45% 33% 21% 33
ExceptionsYesNoUndecidedVotes
Avoid @throws in javadoc 47% 33% 21% 300
Avoid empty catch blocks 83% 10% 7% 284
Be specific in throws clause 59% 34% 7% 235
Beware of unknown root causes 33% 29% 38% 21
Checked versus unchecked exceptions 53% 28% 19% 1360
Exception translation 91% 6% 3% 101
Exceptions and control flow 69% 17% 15% 144
Finally and catch 66% 19% 14% 498
Javadoc all exceptions 54% 25% 21% 101
Pass all pertinent data to exceptions 96% 1% 3% 102
Stack trace as String 77% 14% 9% 677
Use template for repeated try-catch 63% 12% 25% 67
Input-OutputYesNoUndecidedVotes
Always close streams 78% 14% 8% 276
Buffering usually appropriate 90% 7% 3% 58
Console input 53% 30% 17% 223
Copy a file 69% 23% 8% 62
Reading and writing binary files 51% 25% 25% 186
Reading and writing Serializable objects 62% 24% 13% 287
Reading and writing text files 61% 22% 16% 3015
DatabasesYesNoUndecidedVotes
Business identifiers as String 85% 10% 6% 247
Connection pools 87% 6% 7% 267
Consider data layer tools 65% 16% 19% 31
Consider using standard SQL 70% 15% 14% 84
Consider wrapper classes for optional data 76% 13% 11% 62
Data access objects 64% 19% 17% 242
Data exception wrapping 74% 16% 10% 50
Data is king 88% 6% 5% 94
Don't perform basic SQL tasks in code 85% 9% 6% 65
Encapsulate connections 81% 7% 12% 42
Keep SQL out of code 54% 33% 13% 160
Prefer PreparedStatement 90% 5% 5% 62
Reduce database code duplication 93% 0% 7% 27
Remember the basics of database design 88% 7% 5% 56
Simplify database operations 50% 28% 22% 18
Try pseudo-persistence for mock ups 71% 17% 12% 24
Use template for transactions 67% 6% 28% 18
CollectionsYesNoUndecidedVotes
Choosing the right Collection 82% 9% 9% 573
Encapsulate collections 83% 5% 12% 165
Iterate without an index 76% 18% 6% 274
Prefer Collections over older classes 84% 7% 9% 107
Two ways of using Iterator 62% 23% 15% 1081
Use for-each liberally 80% 13% 7% 186
Use interface references to Collections 69% 20% 11% 96
Use standard Collections 81% 7% 12% 127
Overriding Object MethodsYesNoUndecidedVotes
Avoid clone 42% 36% 22% 462
Implementing compareTo 52% 32% 16% 333
Implementing equals 60% 26% 14% 269
Implementing hashCode 57% 26% 17% 358
Implementing toString 50% 30% 20% 361
Never rely on finalize 70% 18% 12% 82
Common TasksYesNoUndecidedVotes
Arrays as String 45% 37% 18% 255
Clipboard copy and paste 80% 12% 9% 1522
Command line operations 43% 44% 13% 167
Compare and sort Strings 55% 30% 15% 230
Copy an array 61% 28% 11% 565
Determine if Strings are equal 69% 23% 8% 488
Examine bytecode 50% 39% 11% 38
Fetch web page and header 65% 20% 15% 307
Generate random numbers 63% 26% 11% 8667
Get database connection 56% 28% 16% 1097
Get size of object in memory 39% 45% 16% 320
Implement code tables 52% 20% 28% 40
Internationalization 51% 25% 24% 51
Logging messages 62% 21% 16% 1245
Measure application performance 78% 15% 7% 54
Modernize old code 90% 6% 4% 48
Open file in native directory 50% 50% 0% 2
Parse text 61% 21% 18% 583
Pattern-match lines of a file 58% 28% 14% 198
Read jar version information 62% 33% 5% 58
Recovering resources 88% 6% 6% 33
Recursive file listing 74% 15% 11% 1046
Replace a substring 60% 29% 10% 362
Representing money 76% 11% 13% 436
Send an email 57% 23% 21% 1897
Time execution speed 72% 21% 7% 121
Common Design PatternsYesNoUndecidedVotes
Abstract Factory 68% 18% 14% 138
Command objects 58% 16% 26% 19
Factory methods 63% 21% 15% 629
Immutable objects 82% 9% 9% 941
Lazy initialization 75% 15% 10% 144
Model Objects 67% 14% 19% 86
Plugin Factory 71% 12% 17% 24
Private constructor 75% 15% 11% 778
Singleton 73% 18% 9% 282
Template method 72% 21% 8% 53
Type-Safe Enumerations 80% 11% 9% 348
Wrapper (Decorator) 59% 22% 19% 32
Common PracticesYesNoUndecidedVotes
Avoid basic style errors 84% 9% 7% 89
Avoid raw types 79% 15% 7% 163
Beware of instanceof operator 61% 23% 16% 1540
Class for constants 68% 20% 12% 545
Construct classes from the outside in 93% 6% 2% 54
Do not break portability 75% 19% 6% 69
Don't declare local variables before use 60% 26% 14% 196
Fields should usually be private 67% 19% 14% 103
Interface for constants 31% 57% 11% 583
Know the core libraries 86% 3% 10% 87
Minimize ripple effects 89% 4% 8% 106
Naming conventions 32% 61% 7% 304
Nest classes with care 33% 33% 33% 6
Output parameters 42% 37% 21% 140
Separate public and private members 71% 23% 6% 66
String concatenation does not scale 84% 10% 6% 152
Tag or marker interfaces 67% 21% 11% 126
Uncommon classes need explicit imports 77% 13% 10% 86
Use @Override liberally 85% 8% 7% 232
Use final liberally 61% 24% 16% 456
Use javadoc liberally 78% 11% 12% 130
Use static imports rarely 60% 27% 13% 431
Use System.exit with care 67% 19% 14% 537
Use Version Control tools 71% 14% 14% 42
Validate method arguments 67% 22% 11% 180
Wisdom, not rules 96% 4% 0% 27
InheritanceYesNoUndecidedVotes
Consider composition instead of subclassing 76% 8% 15% 136
Designing for subclassing 73% 15% 12% 59
Overridable methods need special care 83% 6% 11% 84
Remember styles of inheritance 93% 0% 7% 43
More Common PracticesYesNoUndecidedVotes
Avoid null if possible 63% 23% 14% 258
Beware of Byte Order Marks 62% 31% 6% 16
Beware of DecimalFormat 45% 33% 23% 159
Beware of floating point numbers 91% 7% 2% 98
Clarifying method 91% 6% 2% 81
Coding conventions 86% 5% 9% 78
Compile regular expressions once 79% 12% 10% 42
Conditional compile 51% 38% 11% 188
Consider code generators 75% 15% 10% 68
Consider immutable forms for dates 45% 38% 17% 47
Conventional name for return value 73% 20% 7% 119
Defensive copying 87% 6% 8% 362
Design by Contract 83% 7% 10% 125
Don't use tab characters 31% 65% 4% 217
Extra space in argument list 20% 74% 6% 495
Generating unique IDs 58% 28% 14% 1677
Include 'from', exclude 'to' 76% 14% 10% 50
Multiple return statements 56% 32% 11% 383
Overloading can be tricky 75% 16% 9% 81
Package by feature, not layer 68% 16% 16% 593
Passwords never in clear text 69% 16% 14% 97
Prefer empty items to null ones 71% 20% 9% 349
Quote dynamic text when logging 81% 12% 8% 77
Self-encapsulate fields 61% 18% 21% 160
Structs are occasionally useful 71% 18% 11% 79
Test using main method 40% 50% 10% 98
Try alternatives to ResourceBundle 32% 36% 32% 53
Use a fake system clock 61% 24% 15% 104
Use a testing framework (JUnit) 83% 9% 8% 103
Use Ant for build scripts 75% 14% 12% 216
Use boxing with care 65% 22% 13% 171
Use enums to restrict arguments 75% 12% 13% 92
Validate state with class invariants 59% 25% 16% 61
Validation belongs in a Model Object 59% 32% 9% 110
AssertionsYesNoUndecidedVotes
Assert is for private arguments only 85% 11% 4% 127
Assert use cases 41% 41% 18% 148
Assertions in general 90% 10% 0% 29
Force enabling of assertions 55% 30% 15% 47
ConstructorsYesNoUndecidedVotes
Avoid JavaBeans style of construction 66% 18% 16% 429
Beware of mistaken field redeclares 83% 10% 7% 30
Construct Object using class name 56% 30% 14% 184
Constructors in general 68% 25% 7% 44
Constructors shouldn't call overridables 60% 25% 15% 129
Constructors shouldn't start threads 80% 8% 12% 25
Copy constructors 66% 22% 12% 932
Don't pass 'this' out of a constructor 62% 29% 10% 21
Initializing fields to 0-false-null is redundant 68% 24% 8% 260
SerializationYesNoUndecidedVotes
Implementing Serializable 65% 17% 18% 876
Serialization and subclassing 52% 31% 17% 88
Some classes need readResolve 79% 10% 11% 63
ThreadsYesNoUndecidedVotes
Always shut down an ExecutorService 75% 11% 14% 301
Avoid ThreadGroup 55% 25% 20% 153
Data integrity first 72% 12% 16% 110
Document thread safety 75% 15% 10% 40
Dump thread information 79% 16% 5% 19
Handle InterruptedException 67% 19% 14% 21
Launch thread is just another user thread 84% 6% 9% 32
Objects communicating across threads 71% 16% 12% 122
Perform N tasks in parallel 66% 15% 19% 149
Prefer modern libraries for concurrency 93% 7% 0% 14
Query host for the number of processors 92% 4% 4% 25
Read-write locks 80% 10% 10% 71
Remember the types of intrinsic lock 80% 10% 9% 246
Schedule periodic tasks 68% 20% 13% 1747
Stop threads through cooperation 63% 29% 8% 148
Synchronize access to mutable fields 55% 30% 15% 172
Synchronized is implementation detail 60% 26% 14% 84
Thread priorities are not portable 67% 19% 14% 36
Use finally to unlock 86% 14% 0% 21
© 2014 Hirondelle Systems | Source Code | Contact | License | RSS
Individual code snippets can be used under this BSD license - Last updated on September 21, 2013.
Over 2,000,000 unique IPs last year - Built with WEB4J.
- In Memoriam : Bill Dirani -