The Artima Developer Community
Sponsored Link

.NET Buzz Forum
The Every Project Framework - Part 1

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Jonathan Crossland

Posts: 630
Nickname: jonathanc
Registered: Feb, 2004

Jonathan Crossland is a software architect for Lucid Ocean Ltd
The Every Project Framework - Part 1 Posted: May 1, 2009 9:39 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by Jonathan Crossland.
Original Post: The Every Project Framework - Part 1
Feed Title: Jonathan Crossland Weblog
Feed URL: http://www.jonathancrossland.com/syndication.axd
Feed Description: Design, Frameworks, Patterns and Idioms
Latest .NET Buzz Posts
Latest .NET Buzz Posts by Jonathan Crossland
Latest Posts From Jonathan Crossland Weblog

Advertisement

In The Every Project Framework - Introduction, I spoke of structure and infrastructure, lets now move a little deeper.

Structure is just like Pronutro

When you create an Application, you are immediately adding complexity and dependencies. How well you manage these is how long your application stays 'clean' or 'partitioned', but nevertheless your Application is getting structure with each method calling another, with each class depending on another.

If you don't think about a class, its name, where it should reside, or if you choose incorrectly it affects everything to come. You may not be aware of it entirely, but every decision has a consequence. Perhaps in the future we will have tools to help us deal with 10 or more steps of future planning, so we can verify our decisions a little better, but for now, we only rely on experience and intuition. (Like the movie Next with Nicholas Cage)

btw. Pronutro is a black hole for milk!

We have all heard of 'spaghetti code', but code does not need to be that bad, before it can start becoming a strain to continue with. Just one configuration file setting in 1 tiny config file, can cause masses of damage if its not there or if its incorrect. Yet for the majority of the time, developers put things into configs and rely on the fact that its there.

Convention over Configuration should be adhered to first as a rule.

Partitions
One of the most important aspects for agility within any structure is partitioning. Dividing lines between x and y. Effectively its all about low coupling. Read Grasp patterns regarding Cohesion and Coupling. But also how clean are the partitions? A clean break is when indirectly what you rely on works even if its not available. For example, I used TidyHtml to neaten some html before parsing it. If the TidyATL.dll is not registered in the registry, do I die a painful death or do i simply use the html and proceed to the next step without tidy? How you design and implement code with that sort of thought is what makes it a clean partition. Unfortunately at the extreme ends of things, our tools make this tremendously time consuming to get right for all scenarios. It is easy for example using Tidy, but a lot harder for most critical aspects of an application.

Giving Structure is a fundamental part, but below it on the "layers diagram", is the infrastructure.

Raising the Infrastructure

Today it is pretty simple to use your current modern language to create a simple calculator. the level of abstraction is almost perfectly aligned to the requirements of the small Application. For example, the textbox in .NET is perfectly sufficient, and the Types float, decimal, double, int etc are all at the 'right level' for a calculator.
However its not at the right level for a Stock Management Application or other more complex business software. This is where we need to raise our infrastructure to a more suitable level.
And most of us do, we create Loggers, Data layers and so on, to aid us in reaching the Application from a higher vantage point. But are you properly aware of what is structure and what is infrastructure? And are you raising the level of abstraction high enough?

Next post, I will discuss these levels of abstraction, Architectural Design Patterns such as Layer, from the strict vantage point of structure and infrastructure.


Read: The Every Project Framework - Part 1

Topic: Mark Your Calendar for July 1, 2009 - Windows 7 Beta Expiration Previous Topic   Next Topic Topic: Generic Object Suffixes for Naming your Classes

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use