Skip to main content

Coupling

A good design thrives for low coupling.
  • The lowest form of coupling is set of disconnected objects, which couldn't form a system. (Since, objects don't interact with each other.)
  • The highest form of coupling is Inheritance, which is one of the pillars of OOPS.

The answer for this irony can be "everything is a trade-off in software development". Principles are only guidelines and not rules.

An Anology: "Drive Slowly" is a common driving safety guideline. At the slowest speed (0 km/hr), the vehicle doesn't move. Also, people generally wants to buy a vehicle which gives maximum power and speed. Its a guideline to be applied pragmatically.


P.S: My another post which shows the legal violation of Command Query Separation Principle.

Comments

Popular posts from this blog

Six ways to land rovers on Mars.

Six ways to land robotic rovers on Mars Mars Rover problem is a popular problem statement used by companies to check object orientation and test-driven development skills. In this article, we'll take the core problem statement and see how the solution evolves through six different levels. Knowledge of high school level maths and little python helps to follow this article. The actual Problem Statement: A squad of robotic rovers is to be landed by NASA on a plateau on Mars. This plateau, which is curiously rectangular, must be navigated by the rovers so that their on-board cameras can get a complete view of the surrounding terrain to send back to Earth. A rover's position is represented by a combination of x and y coordinates and a letter representing one of the four cardinal compass points. The plateau is divided up into a grid to simplify navigation. An example position might be 0, 0, N, which means the rover is in the bottom left corner facing North. In order t...

Counting

Letters and numbers are the two eyes of man. - Thirukkural (392) Numbers, the oldest and greatest invention by the man kind, are the base for measurements, without which no useful inventions could ever be made. The objective of this post is to think through the representation of measurements, particularly the counting, in ancient tamil culture. Ancient tamil culture : Measurements are broadly classified into 7 parts. Counting ( எண்ணல்) Weight ( நிறுத்தல்) Liter for liquid ( முகத்தல்) Volume for solid ( பெய்தல் ) Length ( நீட்டல்) Time ( தெறிப்பு) Comparison ( சார்த்தல்) Let's limit the scope only to counting for this post. Counting are generally classified into two parts Chitrilakkam - Fractions. Perilakkam - Whole Numbers. The following shows the names given for the fractions: The following shows the names given for the whole numbers: Other measurements include 100 crores is Kumbam ( கும்பம் ) 1 lakh crores is Sangam ( சங்கம் ) 1 ...

Import 1 billion records from Oracle to HDFS in a record time

The problem: A large scale manufacturing organization aggregates data from different sources, maintains it in a single Oracle table, and the number of records is in the order of a little over a billion. A monthly process has to fetch the data from Oracle to HDFS.  The constraint: Ideally, only the difference for each month could be fetched. But, there is little to no control over the Oracle data source and there is no reliable way to identify the delta. Hence, all the data have to be fetched all the time. To give a perspective, if the table is exported as a CSV from a SQL Client (say, SQL Developer), it takes more than 20 hours to download the table. The tool: Sqoop is the standard tool used to import data from the relational database to HDFS. The solution: $ sqoop import -D **oracle.row.fetch.size=50000 --fetch-size 15000 --num-mappers 40** --table ` <schema>.<table_name> ` -connect ` <jdbc_connection_url> `   --username ` <user> ` -P --target-dir...