Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018



Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018

Preconditions and Postconditions

Preconditions and postconditions are a little old-fashioned, having been largely replaced by the proliferation of TDD, but I don't think they should be completely ruled out.

Preconditions are a set of assumptions that your function has about the parameters being passed into it.

This is especially useful when you accept "primitive" types, but what you actually want is considerably more restrictive than what those types provide. For example, you're accepting a string that is meant to be the path to a file. Many would argue that you should restrict it to a FilePath type of some sort that makes sure the path string is of the correct format when the object is created. I would argue that that is the ideal, but not always the pragmatic solution. Another example along those lines is taking in a FilePath, but the precondition is that the file pointed to already exists and it has the correct file extension. Creating specialty types just to ensure those preconditions will almost definitely be a pain.

Postconditions are similar to preconditions, but are a promise back to the caller that either a certain command was carried out or that the return value will be of a certain shape or format (assuming the preconditions were met).


Read full article from Use Matchers for Preconditions and Postconditions | Java Code Geeks - 2018


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts