Slide 1

Slide 1 text

Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info office: 14 -227 CSC 305 Individual Software Design and Development Lecture 03. Clean Coding II

Slide 2

Slide 2 text

Previously

Slide 3

Slide 3 text

Week 01 3 ✅ Clean Code

Slide 4

Slide 4 text

Week 01 4

Slide 5

Slide 5 text

Week 01 • SRP : Each class should have one, and only one, clear, well-defined job. • Break down your code into smaller, reusable functions. • Keep functions focused on a single task. • Use comments wisely (JavaDoc, multi-line, single-line) • DRY • KIS 5

Slide 6

Slide 6 text

Review Lab 01: Tic Tac Toe 6 Main Or Driver Player GameEngine GameBoard

Slide 7

Slide 7 text

Review Lab 01: Tic Tac Toe 7 Driver Player Game public class Driver { public static void main(String[] arg) { Player player = new Player(); GameEngine game = new GameEngine(); game.ready(); do { player.move(); game.move(); } while (!game.isOver()); game.bye(); } } GameEngine GameBoard Main Or Driver

Slide 8

Slide 8 text

One more thing: Dependency Injection

Slide 9

Slide 9 text

Dependency Injection 9

Slide 10

Slide 10 text

Dependency Injection (DI) • An object’s dependencies (other objects it relies on) are provided externally rather than created internally by the object itself. • Constructor injection: Dependencies are passed via the class constructor. • Setter injection: Dependencies are provided through setter methods. • Make components more accessible to swap or extend without modifying the dependent class. 10

Slide 11

Slide 11 text

• Body Level One • Body Level Two • Body Level Three • Body Level Four • Body Level Five "

Slide 12

Slide 12 text

Tic Tac Toe 12 Main Player Game View

Slide 13

Slide 13 text

Dependency Injection 13 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(); } }

Slide 14

Slide 14 text

Dependency Injection 14 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 … }

Slide 15

Slide 15 text

Examples

Slide 16

Slide 16 text

Jsoup Example 16

Slide 17

Slide 17 text

Jsoup Example 17 https://github.com/CSC3100/Tool-Maven

Slide 18

Slide 18 text

JFreeChart Example 18

Slide 19

Slide 19 text

JFreeChart Example 19 https://github.com/CSC3100/Tool-Maven

Slide 20

Slide 20 text

JavaParser Example 20

Slide 21

Slide 21 text

JavaParser Example 21 https://github.com/CSC3100/Tool-Maven

Slide 22

Slide 22 text

Weka Example 22 data

Slide 23

Slide 23 text

Weka Example 23 (4)

Slide 24

Slide 24 text

Weka Example 24 https://github.com/CSC3100/Tool-Maven

Slide 25

Slide 25 text

115,475 Towns and Cities in the United States July, 2012 https://www.math.uwaterloo.ca/tsp/data/usa/index.html Weka Example 25

Slide 26

Slide 26 text

Tools 26

Slide 27

Slide 27 text

Questions 27

Slide 28

Slide 28 text

Lab 03

Slide 29

Slide 29 text

CSC 305 Individual Software Design and Development Javier Gonzalez-Sanchez, Ph.D. [email protected] Winter 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.