Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Friday, July 29, 2016

APIs should be impossible to misuse

It should hard or impossible to misuse a good API
Josh Block
https://www.youtube.com/watch?v=aAb7hSCtvGw

The above statement validates my preference for using the Builder Pattern to facilitate clients to provide named constructor arguments in a sense. E.g. if a constructor has several string parameters, rather than rely on flaky javadocs and parameter names to inform the user what to provide, I would prefer to provide builder methods that unambiguously let the user know what to provide. For validation of inputs, I make the null checks, etc, in the private constructor. That makes it about as hard to misuse the API/constructor as possible in Java.

Tuesday, November 17, 2015

When to use Java over Drools

Some caveats to remember when using Drools are that it scales best when a large number of rules are executed against a small number of facts. It also makes more sense to use Drools when the rules are loosely coupled; if many rules depend on each other in a chain, it may make more sense to write an if statement decision tree in Java code instead of presenting the logic as a series of individual rules spread throughout one or more DRL files.
https://www.credera.com/blog/technology-insights/open-source-technology-insights/using-drools-expert-apache-camel-part-3-embark-sample-route/

Saturday, November 14, 2015

Volatile accesses are synchronizing

...volatile accesses are synchronizing actions (docs.oracle.com/javase/specs/jls/se7/html/…), as such, they define an order for concurrent events which makes them equivalent to locking on the same monitor. – Cephalopod 
http://stackoverflow.com/questions/3786825/volatile-boolean-vs-atomicboolean