Graduated with a CS degree I never seem to use, but other than that, I'm an explorer of ComputerScience
. Site changed. Will one day post it again when I have time to re-build the site.
Who knows... maybe I will expand things out...
Currently working on a website using Php and Html > http://www.wcm-itconsultant.com
. This is the only link you'll see here to it as it is off-topic....
Also, for those who really want something off topic, check out my thoughts for space colonization at http://star-colony.blogspot.com/
After rereading some pages I used to frequent, I thought I'd post this thought, although some may agree it doesn't apply:
Consider the concept of Infinity. It is defined as the unreachable (or at least) furthest point from where you started. In numbers, there are considered to be 2 infinities: positive and negative.
In some cases, it is impractical or unnecessary to consider an unrepresented infinity, consider angles over 360 degrees on a perfect circle (YAGNI!). You could therefore chose a point that is the furthest possible distance to be infinity (180 degrees).
So what is the use? We can ponder that later, but consider binary - you only have 2 values.
I drew up a bunch of story cards recently to try and piece together a clean understanding of certain elements of XP.
- DoTheSimplestThingThatCouldPossiblyWork -- The old "KISS" statement
- Do not embellish code or make extra functionality for available for a possible improvement because YouArentGonnaNeedIt.
- OnceAndOnlyOnce -- OAOO
- If a purpose is expressed in the code, it is expressed only once.
- If it is expressed more than once, ReFactoring is required.
- YouArentGonnaNeedIt! -- Back to the old "KISS" statement
- Don't start adding code blocks or features that are not required to meet the user stories.
- Cohesion -- Half of CouplingAndCohesion
- A measure of how focused a code block is on one task.
- A block with multiple tasks is less cohesive.
- Coupling -- Half of CouplingAndCohesion
- A measure of dependence between two related code blocks.
- The number of variables shared increases coupling.
- Return/Result values
- A feature or an example of a feature to be implemented.
- There may be several related stories that identify the purose(s) or feature(s) needed.
- The art and science of extracting individual purposes from a MolecularCodeBlock? in order to achieve the simplest thing possible.
- ReFactoring is required if there are multiple signatures that express the same purpose.
- A block of code that is a composition of purposes.
- Ideally the block has been ReFactored into a block containing calls to individual AtomicCodeBlock?s.
- A block of code that expresses one purpose and relies on little or no external data.
- The code is resistant to ReFactoring because it expresses OnceAndOnlyOnce as the simplest thing possible.
- It may contain calls to other AtomicCodeBlock?s with different unique signature/parameter combinations.
- A unique name for a specific block of code.
- A name should reference its purpose.
- Naming conventions vary across the domain of SoftwareDevelopment.
- A signature should be considered unique if:
- the name of the block is not duplicated.
- the type of parameters taken in any order is not duplicated.
I've read around the site and one thing becomes clear to me.... SoftwareEngineer
ing is not considered mature because we don't have the equivalent of standardized nuts (access method?), bolts (methods?), boards (classes?), and washers (interfaces?). So I am Proposing a new topic line: What is our toolbox? What are our NutsAndBolts
of software? I am not talking about introducing language dependent code (that would be a waste of time) but perhaps a good pseudo-code description that can be easily ported to common languages as, hopefully, both OAOO and DTSTTCPW compliant.
Is that not the intent behind the combination of algorithms, data structures, and software patterns?
I would hope so Dave. It is my intent to clear that up not only in my mind, but everyone else's as well. WM
Ach. I still don't know what I wanted with NutsAndBolts
. Even a week of not looking at the page still does not help me in summarizing it in an objective way. :(
Ok, I've given up on my NutsAndBolts
project and intend instead to try and make a suitable PatternTree
showing Pattern-subPattern relationships as I've understood them.