Monday, October 18, 2010

Tuesday, September 28, 2010

Learning Scala: Day One

http://www.scala-lang.org/

The mail site for the language.

Downloaded and installed using the lzPack Installer (A jar file).  To install I selected the file once it was downloaded and selected 'Open'.  Java did the rest.


A web site that lets you interactively try Scala.


An online book on Scala.

Friday, August 20, 2010

When Refactoring to a Class

Start with the variables first.

Create the class with only the variables first and then use the new class that contains the variables.

Once that is working, move in the function to the class.

Wednesday, August 18, 2010

Practical Notes

When doing refactoring it can be helpful to look at a variable that requires refactoring and see what routines it touches.  The routines it touches are possible methods in a refactored class.  (see my work logs notes for this day for an example).

What is the difference between a structure and a class in C++?  http://www.codeguru.com/forum/archive/index.php/t-194315.html

Basically there are a lot of neat stuff like the 'this' pointer, inheritance, polymorphism.  Where would I want to use a structure instead of a class.  In COM I must use a structure.

What does the #pragma once do?  http://en.wikipedia.org/wiki/Pragma_once

It is a non-standard pre-compiler directive which causes the current source file to be only included once in the compile.


Friday, August 6, 2010

Refactoring Study Notes

http://sourcemaking.com/refactoring



Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.

Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior.


 the purpose 

Optimization fits refactor but the code my be harder to understan.

Always be aware of which hat you are wearing.

Tidying up the code.

Regular refactoring help the code maintain its shape.

Eliminate duplicate code.

 Make the code better communicate its purpose.

Design decay

Rule of three:  1st time just do it.  2nd time wince.  3rd time refactor.

When to refactor:
  1. add a function
  2. fix a bug
  3. code review
Small code review, use code.

Large code review, use UML and CRC 
(class-responsibility-collaboration) 
cards.

Design reviews with groups, code review with individuals.

{What about using a random process to select the individual reviewers pairing?}

Ken Beck:  "Programs have two kinds of values:  what they can do for you today and what they can do for you tomorrow."

parasitic indirection - indirection that gives not value

int someValue()
{
   return noValue()
}

int noValue()
{
   return 1;
}

avoid refactoring when close to a deadline. 


OK

Tuesday, July 6, 2010

Pattern Study - Structural

Design Pattern Grouping:

  1. Structural Patterns
    1. Adapter
    2. Bridge
    3. Composite
    4. Decorator
    5. Facade
    6. Flyweight
    7. Proxy
  2. Creational Patterns
  3. Behavioral Patterns
Links: