User:Henon

From eqqon

Revision as of 19:21, 12 December 2009 by Henon (Talk | contribs)
Jump to: navigation, search

Other articles by Henon
Publications
Links

You want some tsingtao stout small.jpg

"Want some TSINGTAO Stout?". Me chewing on something good, with chop sticks, drinking the best Chinese beer there is.

Henon's Blog

Thoughts on Circular Dependencies in Software Design



Definition

A Circular Dependency in a software design is a mutual dependency between two modules which either directly or indirectly depend on each other to function properly. In many cases circular dependencies are perfectly sensible such as a dependency between an Employee class and a Company class where the employing company has a list of employees and each employee has a back-reference to its employer. This circular dependency models a mutual dependency of the domain. Circular dependencies between unrelated modules are considered a bad software design praxis, though. An example for a bad circular dependency would be to have a general Person class instead of an Employee class which inherits from Person and the Company class has references to Persons (which is ok) and the Person has a back-reference to its employing Company (not ok!).

Significance

Circular dependencies should be avoided if possible in software design because of their negative effects. Some of these effects are:

  • a circular dependency can be a "breach of encapsulation" (see Encapsulation)
  • a circular dependency tightly couples two or more modules making each of them unable to be reused in other places without dragging in dependencies on the others.
  • circular dependencies can be the cause of a so called "domino effect" which describes what happens when a small change in software that is supposed to be a local change spreads into other modules and has unwanted global effects (i.e. program errors, compile errors).
  • a circular dependency might result in infinite recursions or in failures in software programs
  • a circular dependency is a "refactoring smell" which may indicate a bad software design

Browse Ad Free with Google Chrome



Everyone agrees that Google's new browser called Chrome is really innovative, fast and cool. But as soon as you try it out, you will hate it for happily displaying all the banners, ads, overlays etc. Not blocking ads is, of course, the full intent of Google and possibly one of the main reasons for introducing a new browser instead of further supporting Firefox because they may have noticed that their ads don't reach firefox users who almost all are using the popular Mozilla extension AdBlock (Plus).

Loving the new concepts of Chrome and also being stunned by its well designed user interface, I have looked around for adblocking support. Here is what I found out:

  • Google does not deliver an adblocking plugin for Chrome.
  • forget AdMuncher it's not free.
  • forget Privoxy it's way too complicated
  • forget HostsMan it doesn't work anyway

I strongly suggest you to use ----> BFilter <------ . It's totally painless to install, no setup required and it works instantly (after adjusting the browser's proxy settings). Knows a lot of adservers and works like a charm even for german ads. Adding rules is straight forward, as we are used to with AdblockPlus.

OK, here is what to do:

  • install BFilter
  • set Chrome's proxy settings to 127.0.0.1 port 8080 (via Options -> Under the Hood -> Change Proxy Settings -> LAN Settings -> Check "Use a proxy server for your LAN")
  • enjoy Chrome adfree!

--Henon 11:48, 11 September 2008 (CEST)