3. My first application
• I don’t know any language
• Well let’s choose a language for application
programming and start learning.
4. … after 2 month
• I have learned programming .. I am good at it
and I can build any thing ….
5. My first application
• As I can build anything I want to build a
chess… I am a very good chess player.
• I know all the rules and I know how to
program ... What else do I need…
9. My first application
• After three weeks 600 lines of code.
• Ok it’s easy.
• After a month it’s 3500 lines of code in one
file. Certainly I find scroll bar is very useful.
10. My first application
• But when a bug occurs … lets debug it.
• Now it seems building application is not as fun
as it ought to be.
• Now after learning a good lesson … well try
something different.
13. My first application
OMG now I have 100 files and to change some
thing I have to change 10 files … it is worst
than I imagined.
14. My first application
I think I have found the problem .. This
application may be very big and I alone can’t
complete it. Let’s ask a friend.
15. My first application
• Arrrrghhhh….
• Well we code differently so many
misunderstanding… it complicates things more
16. My first application
• Let’s stop trying and toiling
• Think, how people writes a code which has
millions of lines and thousands of developers
• How ?????
• …
17. My first application
• Let’s see what can be done…
• There is something wrong . What is the
problem ?
19. My first application
• Ok I successfully build a chess game
• Now I want to build checker or other board
games.
20. My Next Applications
• I am so lazy, but I have to handle some things
again that I have handled in chess game
before. Like,
– Point Table
– Player Switching
– Board status
– Pieces
– Save, load, undo, redo etc….
21. DRY
• If I implement them again it will be wastage of
time.
• Don't Repeat Yourself (DRY)
• Reduce repetition of code of all kinds
22. DRY
• I want to reuse code that I used before in
chess game
23. DRY
• The functions need to customize as it was
written in chess game i have to change it so
that it also work for checker.
24. DRY
• Some times this changes are different because
there are so many options and varieties of
board games
25. DRY
• If I write those functionalities in a sort of
generalized way such that it can be used in all
board games.
• Then I can develop this games very fast
without repeating myself.
26. DRY
• Now I can separate the similar codes that I can
reuse for these board games.
• If I need to build checker then I need similar
structure as chess game.
27. DRY
• If there is a structure that has similar features
for these games then I do not need to start
from the beginning.
• I can straight jump into game logic.
logic
28. Frameworks
• The structure that I built to use for all board
games can be called framework.
• A reusable set of libraries or classes for a
software system.
• Used to implement the standard structure of
an application.
29. Few Frameworks
• For web application
– Symfony
– Zend
– CodeIgniter
– CakePHP
– .NET
– Django
• For desktop application
– Qt C++
– WxWidget
30. • Here is an idea. I am a human why should I
repeat another humans work.
• I haven't coded yet but I need not to because
some one has already coded it for others to
reuse.
• There is no point to reinvent the wheel