CS 190 Lecture Notes: Wrapup

Slides:



Advertisements
Similar presentations
Revealing the Secrets of Self-Documenting Code Svetlin Nakov Telerik Corporation For C# Developers.
Advertisements

API Design CPSC 315 – Programming Studio Fall 2008 Follows Kernighan and Pike, The Practice of Programming and Joshua Bloch’s Library-Centric Software.
Prototype Creational Design Pattern By Brian Cavanaugh September 22, 2003 Software, Design and Documentation.
Algorithm Programming Coding Advices Bar-Ilan University תשס " ו by Moshe Fresko.
How do you simplify? Simple Complicated.
Test Driven Development An approach to writing better code Jimmy Zimmerman Intel Corporation.
CS (CCN 27241) Software Engineering for Scientific Computing Lecture 5: C++ Key Concepts.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
07 Coding Conventions. 2 Demonstrate Developing Local Variables Describe Separating Public and Private Members during Declaration Explore Using System.exit.
Introduction to Data Structures
CS242.  Reduce Complexity  Introduce an intermediate, understandable abstraction  Avoid code duplication  Support subclassing  Hide sequences  Hide.
1 CS 430 Database Theory Winter 2005 Lecture 14: Additional SQL Topics.
SEG 4110 – Advanced Software Design and Reengineering Topic T Introduction to Refactoring.
Clean Code and How to Achieve Zero Defects Jason Jolley Director, Application Development Micro Strategies, Inc.
CS 265 Jianbo Zhao. What is interface? Interface is a detailed boundary between code that provides a service and code that uses it. An interface defines.
A Guide to Dr. Young’s CS331 Project Report Writing
SE-1021 Software Engineering II
Topic: Recursion – Part 2
More Sophisticated Behavior
MICROPROCESSOR BASED SYSTEM DESIGN
Week 2, Day 1: The Factory Method Pattern
Reviewing your Program
Module 5: Common Type System
Storage Management.
CS240: Advanced Programming Concepts
The Pseudocode Programming Process
DHT11 Temperature and Humidity Measurement
Lecture 2 of Computer Science II
Accumulators in Programming
Generics, Lambdas, Reflections
Programming Fundamentals
Communicating in Code: Commenting
structures and their relationships." - Linus Torvalds
YG - CS170.
پروتكل آموزش سلامت به مددجو
Written Description of Algorithms
CSE373: Data Structures & Algorithms Lecture 25: Software-Design Interlude – Preserving Abstractions Catie Baker Spring 2015.
A Guide to Dr. Young’s CS331 Project Report Writing
CSE 1030: Data Structure Mark Shtern.
Unit 6 Assignment 2 Chris Boardley.
CSE373: Data Structures & Algorithms Lecture 16: Software-Design Interlude – Preserving Abstractions Dan Grossman Fall 2013.
CS 190 Lecture Notes: Wrapup
The lifespan of a variable
Middleware, Services, etc.
Review CSE116 2/21/2019 B.Ramamurthy.
CSE 403, Winter 2003 Software Engineering
Program Design Language (PDL)
Java Programming Review 1
Lecture 8: Complex Linked List Code reading: 16.2 – 16.3
COP 3330 Object-oriented Programming in C++
Recursion Taken from notes by Dr. Neil Moore
Design Joshua Lewis Project questions Assignment questions
Software Design Principles
Access control Many languages have a notion of 'private' variables that can't be accessed from outside an object. For example, if we were sending someone.
Knowledge Engineering
Lecture 2 מבוא מורחב.
Chapter 1 Jeff Offutt Chapter 1.1, Concept 1 The 7  2 rule.
Object/Class Design.
CS 190 Lecture Notes: Wrapup
Lecture 2 מבוא מורחב.
Information Hiding and Encapsulation Section 4.2
ENERGY 211 / CME 211 Lecture 27 November 21, 2008.
Oriented Design and Abstract Data Type
HFOOAD Chapter 5 Interlude
Ponzi schemes By Kirsten rodgers.
structures and their relationships." - Linus Torvalds
Design Principles Thanks to Matt Bishop 2006 CS 395: Computer Security.
Introduction To Software Development Environment
slides created by Marty Stepp and Hélène Martin
Presentation transcript:

CS 190 Lecture Notes: Wrapup Key Ideas Overall goal: reduce complexity Dependencies Obscurity Working isn’t good enough Complexity accumulates in small units: zero tolerance Must invest up front for good design Abstraction: find simple ways to think about complicated things Information hiding Classes should be thick Interface versus implementation Avoid specialization: make APIs generic The Martyr Principle Comments should describe things that aren’t obvious from the code Comments should be complete and precise yet short Comments are a canary in the coal mine for complexity Names matter! Reduce the number of places where exceptions must be handled Define errors out of existence CS 190 Lecture Notes: Wrapup

CS 190 Lecture Notes: Wrapup Red Flags Information leakage Dependencies Thin classes Special cases Inconsistencies Repeated code Comment duplicates code Method documentation has to be long to be complete Hard to find clear and simple name for variable Pass-through methods Classes calling back and forth to each other Deep call stacks CS 190 Lecture Notes: Wrapup