Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSC305 Summer Lecture 02

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

CSC305 Summer Lecture 02

Individual Software Design and Development
Clean Code
(202507)

Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info o ffi ce: 14 -227

    CSC 305 Individual Software Design and Development | Summer Version Lecture 02. Clean Code
  2. (

  3. Topics covered in CSC 307, 308, and 309 12 Deployment

    Softw a Testing Coding, Progr a Developing Softw a Design Requirement Engineering [+]
  4. Not CSC 305, but Highly Relevant • C a n

    you cre a te the Product B a cklog for the project described in L a b 1 • How m a ny stories (user stories)? • Do you remember INVEST? • Priority? • Estim a tion? 13
  5. )

  6. Consistent Formatting • Follow a consistent code style a nd

    form a tting guidelines. https://google.github.io/styleguide/javaguide.html • Use indent a tion, whitesp a ce, a nd comments e ff ectively to enh a nce re a d a bility. 16
  7. Meaningful Names • Use descriptive a nd un a mbiguous

    n a mes for v a ri a bles, functions, cl a sses, etc. • Identi f iers (n a me of v a ri a bles a nd cl a sses) a re Nouns • Methods a re Verbs • Avoid using misle a ding or cryptic n a mes. • Follow consistent n a ming conventions. 17
  8. Commenting and Documentation • Write me a ningful comments th

    a t expl a in why something is done, not wh a t is done. • Keep comments up to d a te with code ch a nges. • Document public APIs a nd complex logic thoroughly. • Single Line vs Multiple Line ( a nd J a v a Doc) comments 18
  9. Single Responsibility • E a ch cl a ss or

    function should h a ve one, a nd only one, job. • Keep functions focused on a single t a sk. • Bre a k down your code into sm a ller, reus a ble modules or functions. • Ensure e a ch module or function h a s a cle a r, well-de f ined purpose. • 21
  10. DRY

  11. Don't Repeat Yourself (DRY) • Avoid code duplic a tion

    by a bstr a cting common function a lity. • Use functions or cl a sses to enc a psul a te repe a ted jobs. 23
  12. KIS

  13. Keep It Simple (KIS) • Aim for simplicity in your

    design a nd implement a tion. • Avoid unnecess a ry complexity or over-engineering. 25
  14. Dependency Injection • An object’s dependencies (other objects it relies

    on) a re provided extern a lly r a ther th a n cre a ted intern a lly by the object itself. • Constructor injection: Dependencies a re p a ssed vi a the cl a ss constructor. • Setter injection: Dependencies a re provided through setter methods. • M a ke components more a ccessible to sw a p or extend without modifying the dependent cl a ss. 30
  15. Dependency Injection 31 public class Driver { public static void

    main(String[] arg) { View view = new View (); Player player = new Player(view); Game game = new Game(view); game.ready(); do { player.move(); game.move(); } while (!game.isOver()); game.bye(); } }
  16. Dependency Injection 32 public class Driver { public static void

    main(String[] arg) { View view = new View (); Player player = new Player(view); Game game = new Game(view); game.ready(); do { player.move(); game.move(); } while (!game.isOver()); game.bye(); } } public class View { public void print(String s) { System.out.println(s); } } public class Game { View myView; public Game(View v) { myView = v; } public void ready() { myView.print (“Welcome!”); } // more code … }
  17. ✅ Clean Github Repository All your .j a v a

    f iles inside src/m a in/j a v a / a nd src/test/j a v a /. pom.xml for M a ven README.md: Overview a nd instructions. Unit test cl a sses using JUnit or simil a r in src/test/ .gitignore - A critic a l f ile to exclude unw a nted f iles 34
  18. ❌ Clean Github Repository Compiled Output IDE-Speci f ic Met

    a d a t a Person a l or Sensitive Inform a tion OS-gener a ted f iles like .DS_Store, Thumbs.db 35
  19. Lab

  20. CSC 305 Individual Software Design and Development Javier Gonzalez-Sanchez, Ph.D.

    [email protected] Summer 2025 Copyright. These slides can only be used as study material for the class CSC305 at Cal Poly. They cannot be distributed or used for another purpose.