Code Smell: Avoid Using Object as Input or Output


read(List<Object> keyValues)

It’s very easy for clients to make mistake when call these methods. For example:

ImmutableList.of(ids) creates a list with one element: the element is a List of all these ids:

As ImmutableList<List<String>> is an ImmutableList of Object, so it compiles, but would fail at run time.

  • Another problem in previous method is it uses ImmutableList which makes the method not able to take other Lists, we can just use List or Collection. ##### How General/Specific in parameter or return types?
  • For parameters, use the most generic types possible
  • For return types, use the most specific types possible This can be refactored as:
  • This method can take a list of singular key or compound keys and much easier to use and not likely to make mistake.

of(Object ...)

In most cases, this can be refactored as below:

Other bad examples that uses Object

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)