User:Henon
From eqqon
m (→) |
|||
Line 14: | Line 14: | ||
*[[Streaming between Threads or Processes]] <small>(30 October 2007)</small> | *[[Streaming between Threads or Processes]] <small>(30 October 2007)</small> | ||
*[[The Future of Ruby]] <small>(6 August 2007)</small> | *[[The Future of Ruby]] <small>(6 August 2007)</small> | ||
+ | ;Publications | ||
+ | * [http://www.cg.tuwien.ac.at/~pm/FacadeRepair/ Facade Repair] | ||
;Links | ;Links | ||
*[[:Category:CSharp|C# Knowhow]] | *[[:Category:CSharp|C# Knowhow]] |
Revision as of 18:06, 12 December 2009
- Other articles by Henon
- Using Git on Windows (June 2009)
- Closing the Gap Between IEnumerator and IEnumerable (20 April 2008)
- Asynchronous Events (19 December 2007)
- Design For Reuse (7 December 2007)
- Preventing Recursive Events in C# (21 November 2007)
- Visitor Pattern (21 November 2007)
- Navigating in Exception Stack Traces in Visual C# (9 November 2007)
- Ruby-like instance variable syntax in C# (30 October 2007)
- Streaming between Threads or Processes (30 October 2007)
- The Future of Ruby (6 August 2007)
- Publications
- Links
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)