Best practice. Luigi De Russis. Clean Code

Size: px
Start display at page:

Download "Best practice. Luigi De Russis. Clean Code"

Transcription

1 Best practice Luigi De Russis

2 2 Measuring code quality

3 The only valid measurement: WTFs/min 3 Good code Bad code WTF WTF WTF, this is shit! CODE REVIEW WTF WTF CODE REVIEW WTF Dude, WTF WTF

4 4 Goals

5 Code MUST be 5 Readable Maintainable Extendable Testable

6 6 How?

7 7

8 8 Meaningful names

9 An example 9 public List<int[]> getthem() { List<int[]> list = new ArrayList<int[]>(); for (int[] x : thelist) if (x[0] == 4) list.add(x); return list; } What does this code do?

10 An example 10 public List<int[]> getflaggedcells() { List<int[]> flaggedcells = new ArrayList<int[]>(); for (int[] cell : gameboard) if (cell[status_value] == FLAGGED) flaggedcell.add(cell); return flaggedcells; } Better?

11 An example 11 public List<Cell> getflaggedcells() { List<Cell> flaggedcells = new ArrayList<Cell>(); for (Cell cell : gameboard) if (cell.isflagged()) flaggedcell.add(cell); return flaggedcells; } What about this?

12 What we have done 12 Used intention revealing names flaggedcells rather than list Replaced magic numbers with constants cell[status_value] rather than x[0] Created an appropriate abstract data type Cell cell rather than int[] cell

13 Another example 13 class DtaRcrd102 { private Date genymdhms; private Date modymdhms; private final String pszqint = 102 ; /*... */ } Use pronounceable and searchable names (please!)

14 Another example 14 class Customer { private Date generationtimestamp; private Date modificationtimestamp; private final String recordid = 102 ; /*... */ } Better?

15 15 Functions

16 Functions 16 Small Do One Thing

17 Do One Thing 17 public bool isedible() { if(this.expirationdate > Date.Now && this.approvedforconsumption == true && this.inspectorid!= null) { return true; else return false; } How many things is the function doing?

18 Do One Thing 18 public bool isedible() { } return isfresh() && isapproved() && isinspected(); Now the function is doing one thing! A change in the specification turns into a single change in the code.

19 Functions 19 Handle errors (and use exceptions) Don t Repeat Yourself (avoid copy-and-paste code)

20 20 Comments

21 Explain yourself in the code 21 Which one is cleaner? //check to see if the employee is eligible for full benefits if((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if(employee.iseligibleforfullbenefits())

22 Explain yourself in the code 22 Which one is cleaner? //check to see if the employee is eligible for full benefits if((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if(employee.iseligibleforfullbenefits())

23 API Documentation YES Explanation of intent Clarification Warning of consequences Orphan comments NO Obsolete comments Noise comments Code commented-out 23

24 24 Formatting

25 Formatting 25 Communication is the purpose of formatting Vertical openness between concepts Each blank line is a visual cue that identifies a new and separate concept

26 Breaking Indentation 26 public class CommentWidget extends TextWidget { public static final String REGEXP = ^#[\r\n]*(?:(?:\r\n) \n \r)? ; public CommentWidget(String text) { super(text); } public String render() throws Exception { return ; } } Eh?

27 Breaking Indentation 27 public class CommentWidget extends TextWidget { public static final String REGEXP = ^#[\r\n]*(?:(?:\r\n) \n \r)? ; public CommentWidget(String text) { super(text); } Better? } public String render() throws Exception { return ; }

28 28 Conventions

29 Conventions 29 Conventions enable common understanding Stick to the language-specific conventions Respect team-level conventions Still complying with the language-specific conventions

30 References 30 Robert C. Martin Series, - A Handbook of Agile Software Craftsmanship, Prentice Hall Geek and Poke, OSNews Comics,

31 License 31 This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike Unported (CC BY-NC-SA 3,0) License. You are free: to Share - to copy, distribute and transmit the work to Remix - to adapt the work Under the following conditions: Attribution - You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Noncommercial - You may not use this work for commercial purposes. Share Alike - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. To view a copy of this license, visit

Clean

Clean Clean Code @mariosangiorgio Why? Goals Readable, maintainable and extendable code Meaningful names A simple example public List getthem() { List list1 = new ArrayList(); for (int[]

More information

CLEAN CODE Why You Should Care

CLEAN CODE Why You Should Care CLEAN CODE Why You Should Care CERN Spring Campus 2014 Gijón, Spain - 15th April 2014 Benjamin Wolff (CERN / GS-AIS) WHAT IS BAD CODE? WHAT IS BAD CODE? CONSEQUENCES OF BAD CODE CONSEQUENCES OF BAD CODE

More information

Cómo programar para que te entennan? Aula ne Sofware Libre Sergio 1

Cómo programar para que te entennan? Aula ne Sofware Libre Sergio 1 Cómo programar para que te entennan? Aula ne Sofware Libre Sergio Gómez @sgomez 1 Patern Design 2 3 4 5 Clean Code 6 7 Waterfall Model 8 Waterfall Model 9 10 11 2001: Agile Manifesto 12 1991: Rapid Applicaton

More information

Motivations. Luigi De Russis. Why Ruby (on Rails)?

Motivations. Luigi De Russis. Why Ruby (on Rails)? Motivations Luigi De Russis 2 Disclaimer YES course-specific value open mind NO general value extremism 3 4 Course requirements Goal and context 5 Goal design and implement a Social Network site 6 credits

More information

Clean Object- Oriented Design

Clean Object- Oriented Design Clean Object- Oriented Design Objektumorientált szoftvertervezés Object-oriented software design Dr. Balázs Simon BME, IIT Outline Meaningful names Functions Comments Objects and data structures Error

More information

Clean code. Why? What is "clean code"? Bjarne Stroustrup. Grady Booch. Dave Thomas. 1 z 5. Petr Pošík. Department of Cybernetics, FEE CTU in Prague

Clean code. Why? What is clean code? Bjarne Stroustrup. Grady Booch. Dave Thomas. 1 z 5. Petr Pošík. Department of Cybernetics, FEE CTU in Prague 1 z 5 Clean code Petr Pošík Department of Cybernetics, FEE CTU in Prague EECS, BE5B33PRG: Programming Essentials, 2015 Based on: PEP 8 (https://www.python.org/dev/peps/pep-0008/). Robert C. Martin: Clean

More information

Python INTERMEDIATE. Rapid prototyping using Python libraries and integration with local and remote services

Python INTERMEDIATE. Rapid prototyping using Python libraries and integration with local and remote services Python INTERMEDIATE Rapid prototyping using Python libraries and integration with local and remote services The Starting Point You (should) have the basic knowledge for creating Python programs from scratch

More information

Code Beauty. Prof. Fabio Kon. Department of Computer Science Institute of Mathematics and Statistics University of São Paulo

Code Beauty. Prof. Fabio Kon. Department of Computer Science Institute of Mathematics and Statistics University of São Paulo 1 Code Beauty Prof. Fabio Kon Department of Computer Science Institute of Mathematics and Statistics University of São Paulo SugarLoafPLoP'2010-24/9/2010 Salvador, Brazil 2 Agenda Definition of Beauty

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

Ruby AN OVERVIEW. Luigi De Russis Dipartimento di Automatica e Informatica Politecnico di Torino

Ruby AN OVERVIEW. Luigi De Russis Dipartimento di Automatica e Informatica Politecnico di Torino Ruby AN OVERVIEW Luigi De Russis Dipartimento di Automatica e Informatica Politecnico di Torino luigi.derussis@polito.it What is Ruby? Ruby is a dynamic, open source programming language with a focus on

More information

Databases in Python. MySQL, SQLite. Accessing persistent storage (Relational databases) from Python code

Databases in Python. MySQL, SQLite. Accessing persistent storage (Relational databases) from Python code Databases in Python MySQL, SQLite Accessing persistent storage (Relational databases) from Python code Goal Making some data 'persistent' When application restarts When computer restarts Manage big amounts

More information

Web Architecture AN OVERVIEW

Web Architecture AN OVERVIEW Web Architecture AN OVERVIEW General web architecture Historically, the client is a web browser But it can be also A mobile application A desktop application Other server applications Internet Server(s)

More information

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects. Git AN INTRODUCTION Introduction to Git as a version control system: concepts, main features and practical aspects. How do you share and save data? I m working solo and I only have one computer What I

More information

Python BASICS. Introduction to Python programming, basic concepts: formatting, naming conventions, variables, etc.

Python BASICS. Introduction to Python programming, basic concepts: formatting, naming conventions, variables, etc. Python BASICS Introduction to Python programming, basic concepts: formatting, naming conventions, variables, etc. Identikit First appeared in 1991 Designed by Guido van Rossum General purpose High level

More information

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects. Git AN INTRODUCTION Introduction to Git as a version control system: concepts, main features and practical aspects. How do you share and save data? I m working solo and I only have one computer What I

More information

Prototyping a Social Network. AngularJS: Firebase integration with AngularFire

Prototyping a Social Network. AngularJS: Firebase integration with AngularFire Prototyping a Social Network AngularJS: Firebase integration with AngularFire Pizza++ 2 Pizza++ Feature Set Find top pizzas to eat near me Post pizzas Rate pizzas Review (comment) pizzas Discuss about

More information

Solution: a lock (a/k/a mutex) public: virtual void unlock() =0;

Solution: a lock (a/k/a mutex) public: virtual void unlock() =0; 1 Solution: a lock (a/k/a mutex) class BasicLock { public: virtual void lock() =0; virtual void unlock() =0; ; 2 Using a lock class Counter { public: int get_and_inc() { lock_.lock(); int old = count_;

More information

Clean Comments and Formatting

Clean Comments and Formatting Clean Comments and Formatting Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 23 Clean Comments Comments are (usually) evil. Most comments

More information

CS 2340 Objects and Design

CS 2340 Objects and Design CS 2340 Objects and Design Clean Comments Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design Clean Comments 1 / 15 Clean Comments Comments are (usually)

More information

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects. Git AN INTRODUCTION Introduction to Git as a version control system: concepts, main features and practical aspects. Have you ever lost your work? 3/10/2017 Version Control with Git 2 Have you ever lost

More information

SEMANTIC WEB AN INTRODUCTION. Luigi De https://elite.polito.it

SEMANTIC WEB AN INTRODUCTION. Luigi De https://elite.polito.it SEMANTIC WEB AN INTRODUCTION Luigi De Russis @luigidr https://elite.polito.it THE WEB IS A WEB OF DOCUMENT FOR PEOPLE, NOT FOR MACHINES 2 THE WEB IS A WEB OF DOCUMENT 3 THE SEMANTIC WEB IS A WEB OF DATA

More information

3. Design by Contract

3. Design by Contract 3. Design by Contract Oscar Nierstrasz Design by Contract Bertrand Meyer, Touch of Class Learning to Program Well with Objects and Contracts, Springer, 2009. 2 Roadmap > Contracts > Stacks > Design by

More information

AngularJS. Beginner's guide - part 1

AngularJS. Beginner's guide - part 1 AngularJS Beginner's guide - part 1 AngularJS: 2 AngularJS: Superheroic JavaScript MVW Framework 3 AngularJS: Superheroic JavaScript MVW Framework 4 AngularJS: Superheroic JavaScript MVW Framework Javascript

More information

Programming THE SEMANTIC WEB. Build an application upon Semantic Web models. Brief overview of Apache Jena and OWL-API.

Programming THE SEMANTIC WEB. Build an application upon Semantic Web models. Brief overview of Apache Jena and OWL-API. Programming THE SEMANTIC WEB Build an application upon Semantic Web models. Brief overview of Apache Jena and OWL-API. Recap: Tools Editors (http://semanticweb.org/wiki/editors) Most common editor: Protégé

More information

return pagedata.gethtml(); }

return pagedata.gethtml(); } Functions public static String testablehtml(pagedata pagedata, boolean includesuitesetup) throws Exception { WikiPage wikipage = pagedata.getwikipage(); StringBuffer buffer = new StringBuffer(); if (pagedata.hasattribute("test"))

More information

Clean Code. A Handbook of Agile Software Craftsmanship. The Object Mentors: Robert С Martin

Clean Code. A Handbook of Agile Software Craftsmanship. The Object Mentors: Robert С Martin Clean Code A Handbook of Agile Software Craftsmanship The Object Mentors: Robert С Martin Michael C. Feathers Timothy R. Ottinger Jeffrey J. Langr Brett L. Schuchert James W. Grenning Kevin Dean Wampler

More information

Consider The Source. Express Logic, Inc.

Consider The Source. Express Logic, Inc. Consider The Source John A. Carbone Express Logic, Inc. Outline How do embedded developers value RTOS source code? Why is RTOS source code important? What constitutes Good Code? What makes a good RTOS

More information

CSE 142/143 Unofficial Style Guide

CSE 142/143 Unofficial Style Guide CSE 142/143 Unofficial Style Guide Below, things in GREEN are GOOD; things in RED are to be AVOIDED. Commenting Comment well. Follow the commenting rules for header, method, field, and inside-method comments

More information

CuteFlow-V4 Documentation

CuteFlow-V4 Documentation CuteFlow-V4 Documentation Release 4.0.0 Timo Haberkern Nov 15, 2017 Contents 1 Contributing 3 1.1 Contributing Code............................................ 3 1.2 Contributing Documentation.......................................

More information

AngularJS. Beginner's guide - part 2

AngularJS. Beginner's guide - part 2 AngularJS Beginner's guide - part 2 Summary of the previous lesson 1. To add AngularJS to an empty page: a) Download the script angular.js from https://angularjs.org/ b) Link it in the header

More information

Precalculus An Investigation of Functions

Precalculus An Investigation of Functions Precalculus An Investigation of Functions David Lippman Melonie Rasmussen Edition 1.3 This book is also available to read free online at http://www.opentextbookstore.com/precalc/ If you want a printed

More information

Introduction to Android

Introduction to Android Introduction to Android Ambient intelligence Alberto Monge Roffarello Politecnico di Torino, 2017/2018 Some slides and figures are taken from the Mobile Application Development (MAD) course Disclaimer

More information

SD314 Outils pour le Big Data

SD314 Outils pour le Big Data Institut Supérieur de l Aéronautique et de l Espace SD314 Outils pour le Big Data Functional programming in Python Christophe Garion DISC ISAE Christophe Garion SD314 Outils pour le Big Data 1/ 35 License

More information

Peterson s Algorithm

Peterson s Algorithm Peterson s Algorithm public void lock() { flag[i] = true; victim = i; while (flag[j] && victim == i) {}; } public void unlock() { flag[i] = false; } 24/03/10 Art of Multiprocessor Programming 1 Mutual

More information

Title: Counting While Loops

Title: Counting While Loops Title: Counting While Loops Erik Boling, Panitz, Bit115, Winter Quarter 2011 Assignment Definition And General Feedback By Michael Panitz at Cascadia Community College (http://www.cascadia.edu) Table of

More information

Lecture 7: Mutual Exclusion 2/16/12. slides adapted from The Art of Multiprocessor Programming, Herlihy and Shavit

Lecture 7: Mutual Exclusion 2/16/12. slides adapted from The Art of Multiprocessor Programming, Herlihy and Shavit Principles of Concurrency and Parallelism Lecture 7: Mutual Exclusion 2/16/12 slides adapted from The Art of Multiprocessor Programming, Herlihy and Shavit Time Absolute, true and mathematical time, of

More information

Parallel Programming

Parallel Programming Parallel Programming 9. Pipeline Parallelism Christoph von Praun praun@acm.org 09-1 (1) Parallel algorithm structure design space Organization by Data (1.1) Geometric Decomposition Organization by Tasks

More information

QueueBlock, ReversalADT, LinkedList,CustomerAccount, not MaintainCustomerData

QueueBlock, ReversalADT, LinkedList,CustomerAccount, not MaintainCustomerData Naming Conventions Rules Classes Use nouns Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML) Begin with upper case

More information

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN

AJAX ASYNCHRONOUS JAVASCRIPT AND XML. Laura Farinetti - DAUIN AJAX ASYNCHRONOUS JAVASCRIPT AND XML Laura Farinetti - DAUIN Rich-client asynchronous transactions In 2005, Jesse James Garrett wrote an online article titled Ajax: A New Approach to Web Applications (www.adaptivepath.com/ideas/essays/archives/000

More information

Perl Basics. Structure, Style, and Documentation

Perl Basics. Structure, Style, and Documentation Perl Basics Structure, Style, and Documentation Copyright 2006 2009 Stewart Weiss Easy to read programs Your job as a programmer is to create programs that are: easy to read easy to understand, easy to

More information

The Semantic Web DEFINITIONS & APPLICATIONS

The Semantic Web DEFINITIONS & APPLICATIONS The Semantic Web DEFINITIONS & APPLICATIONS Data on the Web There are more an more data on the Web Government data, health related data, general knowledge, company information, flight information, restaurants,

More information

Tutorial Four Discretization Part 1

Tutorial Four Discretization Part 1 Discretization Part 1 4 th edition, Jan. 2018 This offering is not approved or endorsed by ESI Group, ESI-OpenCFD or the OpenFOAM Foundation, the producer of the OpenFOAM software and owner of the OpenFOAM

More information

STEAM Clown & Productions Copyright 2017 STEAM Clown. Page 1

STEAM Clown & Productions Copyright 2017 STEAM Clown. Page 1 What to add next time you are updating these slides Update slides to have more animation in the bullet lists Verify that each slide has stand alone speaker notes Page 1 Python 3 Running The Python Interpreter

More information

COSC345 Software Engineering. Documentation

COSC345 Software Engineering. Documentation COSC345 Software Engineering Documentation Documentation Self-documenting code Comments Outline Documentation And Comments McConnell Most developers like writing documentation If the standards aren t unreasonable

More information

Activity 1: Introduction

Activity 1: Introduction Activity 1: Introduction In this course, you will work in teams of 3 4 students to learn new concepts. This activity will introduce you to the process. We ll also take a first look at how to store data

More information

Introduction to lab assignments with GNS3

Introduction to lab assignments with GNS3 Politecnico di Torino TSR/CNTS, PRL, PAR Introduction to lab assignments with GNS3 User guide and helpful tips Roberto Bonafiglia, Fulvio Risso October 27, 2017 Contents 1 Requirements 4 2 Access to GNS3

More information

OpenFOAM Basic Training Tutorial Nine

OpenFOAM Basic Training Tutorial Nine Tutorial Nine 3 rd edition, Feb. 25 This offering is not approved or endorsed by ESI Group, ESI-OpenCFD or the OpenFOAM Foundation, the producer of the OpenFOAM software and owner of the OpenFOAM trademark.

More information

CIT 480: Securing Computer Systems. Operating System Concepts

CIT 480: Securing Computer Systems. Operating System Concepts CIT 480: Securing Computer Systems Operating System Concepts Topics 1. What is an OS? 2. Processes 3. Memory management 4. Filesystems 5. Virtual machines A Computer Model An operating system has to deal

More information

Best Practices for Code Handoffs

Best Practices for Code Handoffs HANDS OFF! Best Practices for Code Handoffs Naomi Dushay ndushay Stanford University Libraries Code4Lib 2013 Code Handoffs Aren t Like This Code Handoffs Code Handoffs Code Handoffs I m supposed to take

More information

IN112 Mathematical Logic

IN112 Mathematical Logic Institut Supérieur de l Aéronautique et de l Espace IN112 Mathematical Logic Lab session on Prolog Christophe Garion DMIA ISAE Christophe Garion IN112 IN112 Mathematical Logic 1/ 31 License CC BY-NC-SA

More information

pythonocc Parametric Application Framework (PAF) tutorial r0.4

pythonocc Parametric Application Framework (PAF) tutorial r0.4 pythonocc Parametric Application Framework (PAF) tutorial r0.4 Thomas Paviot (tpaviot@gmail.com) February 27, 2010 Abstract This guide aims at introducing in a few stages the pythonocc package intended

More information

AngularJS AN INTRODUCTION. Introduction to the AngularJS framework

AngularJS AN INTRODUCTION. Introduction to the AngularJS framework AngularJS AN INTRODUCTION Introduction to the AngularJS framework AngularJS Javascript framework for writing frontend web apps DOM manipulation, input validation, server communication, URL management,

More information

Red Hat OpenStack Platform 13

Red Hat OpenStack Platform 13 Red Hat OpenStack Platform 13 NetApp Back End Guide for the Shared File System Service Deploying Multiple NetApp Back Ends for the Shared File System Service in a Red Hat OpenStack Platform Overcloud Last

More information

Introduction. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit

Introduction. Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Introduction Companion slides for The by Maurice Herlihy & Nir Shavit Moore s Law Transistor count still rising Clock speed flattening sharply 2 Moore s Law (in practice) 3 Nearly Extinct: the Uniprocesor

More information

The Monte Media Handbook

The Monte Media Handbook The Monte Media Handbook Version 0.3 Werner Randelshofer, 2012-04-01 2012 Werner Randelshofer. This work is licensed under a Creative Commons Attribution 3.0 Unported License. 1 Contents Introduction to

More information

REST API OVERVIEW. Design and of Web APIs using the REST paradigm.

REST API OVERVIEW. Design and of Web APIs using the REST paradigm. REST API OVERVIEW Design and of Web APIs using the REST paradigm. Goal How to use REST architectures to integrate (call and/or offer) remote services How to design a consistent set of REST APIs How to

More information

CSE 11 Style Guidelines

CSE 11 Style Guidelines CSE 11 Style Guidelines These style guidelines are based off of Google s Java Style Guide and Oracle s Javadoc Guide. Overview: Your style will be graded on the following items: File Headers Class Headers

More information

IN112 Mathematical Logic

IN112 Mathematical Logic Institut Supérieur de l Aéronautique et de l Espace IN112 Mathematical Logic Lab session on Prolog Christophe Garion DMIA ISAE Christophe Garion IN112 IN112 Mathematical Logic 1/ 31 License CC BY-NC-SA

More information

CMSC 201 Fall 2018 Python Coding Standards

CMSC 201 Fall 2018 Python Coding Standards CMSC 201 Fall 2018 Python Coding Standards The purpose of these coding standards is to make programs readable and maintainable. In the real world you may need to update your own code more than 6 months

More information

Red Hat CloudForms 4.5 Integration with AWS CloudFormation and OpenStack Heat

Red Hat CloudForms 4.5 Integration with AWS CloudFormation and OpenStack Heat Red Hat CloudForms 4.5 Integration with AWS CloudFormation and OpenStack Heat How to install and configure Amazon CloudFormation and OpenStack Heat in a Red Hat CloudForms environment Red Hat CloudForms

More information

CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley

CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley In Brief: What You Need to Know to Comment Methods in CSE 143 Audience o A random person you don t know who wants

More information

Day06 A. Young W. Lim Wed. Young W. Lim Day06 A Wed 1 / 26

Day06 A. Young W. Lim Wed. Young W. Lim Day06 A Wed 1 / 26 Day06 A Young W. Lim 2017-09-20 Wed Young W. Lim Day06 A 2017-09-20 Wed 1 / 26 Outline 1 Based on 2 C Program Control Overview for, while, do... while break and continue Relational and Logical Operators

More information

Activity 3: Data Types

Activity 3: Data Types Activity 3: Data Types Java supports two main types of data: primitive types like int and double that represent a single value, and reference types like String and Scanner that represent more complex information.

More information

GAS Tutorial - 6. Expression

GAS Tutorial - 6. Expression GAS Tutorial - 6. Expression Young W. Lim 2016-03-03 Wed Young W. Lim GAS Tutorial - 6. Expression 2016-03-03 Wed 1 / 15 Outline 1 Expressions Young W. Lim GAS Tutorial - 6. Expression 2016-03-03 Wed 2

More information

Red Hat Decision Manager 7.0 Designing a decision service using uploaded decision tables

Red Hat Decision Manager 7.0 Designing a decision service using uploaded decision tables Red Hat Decision Manager 7.0 Designing a decision service using uploaded decision tables Last Updated: 2018-10-01 Red Hat Decision Manager 7.0 Designing a decision service using uploaded decision tables

More information

Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A

Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A Name: ID#: Section #: Day & Time: Instructor: Answer all questions as indicated. Closed book/closed

More information

Objectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures. Control Structures (cont d.) Relational Operators

Objectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures. Control Structures (cont d.) Relational Operators Objectives Chapter 4: Control Structures I (Selection) In this chapter, you will: Learn about control structures Examine relational and logical operators Explore how to form and evaluate logical (Boolean)

More information

Using Gmail. Created by the Columbia Basin Alliance for Literacy. Margaret Sutherland

Using Gmail. Created by the Columbia Basin Alliance for Literacy. Margaret Sutherland Created by the Columbia Basin Alliance for Literacy This project is funded by Government of Canada s New Horizons for Seniors Program and is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

More information

Day06 A. Young W. Lim Mon. Young W. Lim Day06 A Mon 1 / 16

Day06 A. Young W. Lim Mon. Young W. Lim Day06 A Mon 1 / 16 Day06 A Young W. Lim 2017-09-18 Mon Young W. Lim Day06 A 2017-09-18 Mon 1 / 16 Outline 1 Based on 2 Introduction C Program Control Young W. Lim Day06 A 2017-09-18 Mon 2 / 16 Based on "C How to Program",

More information

Classes, interfaces, & documentation. Review of basic building blocks

Classes, interfaces, & documentation. Review of basic building blocks Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform

More information

Activity 1: Introduction

Activity 1: Introduction Activity 1: Introduction In this course, you will work in teams of 3 4 students to learn new concepts. This activity will introduce you to the process. We ll also take a first look at how to store data

More information

R E A D C L E A N C O D E : A H A N D B O O K O F S O F T W A R E C R A F T S M A N S H I P. C H A P T E R S 2 A N D 4.

R E A D C L E A N C O D E : A H A N D B O O K O F S O F T W A R E C R A F T S M A N S H I P. C H A P T E R S 2 A N D 4. R E A D C L E A N C O D E : A H A N D B O O K O F S O F T W A R E C R A F T S M A N S H I P. C H A P T E R S 2 A N D 4. H T T P S : / / R E F A C T O R I N G. G U R U / R E F A C T O R I N G / C A T A

More information

Chapter 4: Control Structures I (Selection) Objectives. Objectives (cont d.) Control Structures. Control Structures (cont d.

Chapter 4: Control Structures I (Selection) Objectives. Objectives (cont d.) Control Structures. Control Structures (cont d. Chapter 4: Control Structures I (Selection) In this chapter, you will: Objectives Learn about control structures Examine relational and logical operators Explore how to form and evaluate logical (Boolean)

More information

Day05 A. Young W. Lim Sat. Young W. Lim Day05 A Sat 1 / 14

Day05 A. Young W. Lim Sat. Young W. Lim Day05 A Sat 1 / 14 Day05 A Young W. Lim 2017-10-07 Sat Young W. Lim Day05 A 2017-10-07 Sat 1 / 14 Outline 1 Based on 2 Structured Programming (2) Conditions and Loops Conditional Statements Loop Statements Type Cast Young

More information

Coarse-grained and fine-grained locking Niklas Fors

Coarse-grained and fine-grained locking Niklas Fors Coarse-grained and fine-grained locking Niklas Fors 2013-12-05 Slides borrowed from: http://cs.brown.edu/courses/cs176course_information.shtml Art of Multiprocessor Programming 1 Topics discussed Coarse-grained

More information

Use C++, not C for all work in this course. The biggest difference is how one does input

Use C++, not C for all work in this course. The biggest difference is how one does input Chapter 1: Preamble 1.1 Commandments A nationally-known expert has said that C++ is a coding monster that forces us to use a disciplined style in order to tame it. This leads to a fundamental rule for

More information

Tutorial Fourteen Sampling

Tutorial Fourteen Sampling Sampling 4 th edition, Jan. 2018 This offering is not approved or endorsed by ESI Group, ESI-OpenCFD or the OpenFOAM Foundation, the producer of the OpenFOAM software and owner of the OpenFOAM trademark.

More information

HTML5 Drag &Drop API. For better interfaces. Laura Farinetti - DAUIN

HTML5 Drag &Drop API. For better interfaces. Laura Farinetti - DAUIN HTML5 Drag &Drop API For better interfaces Laura Farinetti - DAUIN Drag & drop HTML 5 includes a Drag and Drop API that brings native drag&drop support to the browser Drag & drop requires Something to

More information

CS 520 Theory and Practice of Software Engineering Fall 2017

CS 520 Theory and Practice of Software Engineering Fall 2017 CS 520 Theory and Practice of Software Engineering Fall 2017 Best and worst programming practices September 12, 2017 Logistics Recap: software architecture vs. design Specification Architecture Development

More information

Red Hat OpenStack Platform 13

Red Hat OpenStack Platform 13 Red Hat OpenStack Platform 13 NetApp Back End Guide for the Shared File System Service Deploying Multiple NetApp Back Ends for the Shared File System Service in a Red Hat OpenStack Platform Overcloud Last

More information

Assignment Definition And General Feedback By Michael Panitz at Cascadia Community College (

Assignment Definition And General Feedback By Michael Panitz at Cascadia Community College ( For Loops: Will Tanna Assignment Definition And General Feedback By Michael Panitz at Cascadia Community College (http://www.cascadia.edu) Table of contents: Summary When To Use and Avoid This Example

More information

CE204 Data Structures and Algorithms Part 1

CE204 Data Structures and Algorithms Part 1 CE204 Data Structures and Algorithms Part 1 11/01/2018 CE204 Part 1 1 Recommended Reading The most useful book for much of the material in this module is Data Structures and Algorithm Analysis in Java

More information

EECS 280 C++ Coding Standards

EECS 280 C++ Coding Standards EECS 280 C++ Coding Standards The goal of coding standards is to make code easier to understand and maintain. Refer to these guidelines as you are writing code, not just at the end, to develop good coding

More information

Programming Paradigms for Concurrency Lecture 3 Concurrent Objects

Programming Paradigms for Concurrency Lecture 3 Concurrent Objects Programming Paradigms for Concurrency Lecture 3 Concurrent Objects Based on companion slides for The Art of Multiprocessor Programming by Maurice Herlihy & Nir Shavit Modified by Thomas Wies New York University

More information

Guide for depositing Final Bachelor's Degree Project Final Master's Degree Project- Practicum in O2, the UOC's institutional repository

Guide for depositing Final Bachelor's Degree Project Final Master's Degree Project- Practicum in O2, the UOC's institutional repository Guide for depositing Final Bachelor's Degree Project Final Master's Degree Project- Practicum in O2, the UOC's institutional repository Steps to follow to publish a document in the repository 1. Enter

More information

C Coding Style Guide Version 0.4

C Coding Style Guide Version 0.4 Technotes, HowTo Series C Coding Style Guide Version 0.4 by Mike Krüger, mike@icsharpcode.net Contents 1 About the C Coding Style Guide 1 2 File Organization.. 1 3 Indentation 2 4 Comments. 3 5 Declarations.

More information

Red Hat CloudForms 4.0

Red Hat CloudForms 4.0 Red Hat CloudForms 4.0 Introduction to the Self Service Portal An overview of the CloudForms Management Engine (CFME) Self Service user interface Last Updated: 2017-12-08 Red Hat CloudForms 4.0 Introduction

More information

The JavaScript Language

The JavaScript Language The JavaScript Language INTRODUCTION, CORE JAVASCRIPT Laura Farinetti - DAUIN What and why JavaScript? JavaScript is a lightweight, interpreted programming language with object-oriented capabilities primarily

More information

7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker!

7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker! 7. Optimization! Prof. O. Nierstrasz! Lecture notes by Marcus Denker! Roadmap > Introduction! > Optimizations in the Back-end! > The Optimizer! > SSA Optimizations! > Advanced Optimizations! 2 Literature!

More information

10/1/2015. dt+ux Design Thinking for User Experience Design, Prototyping & Evaluation, Autumn 2015 Prof. James A. Landay Stanford University

10/1/2015. dt+ux Design Thinking for User Experience Design, Prototyping & Evaluation, Autumn 2015 Prof. James A. Landay Stanford University dt+ux: DESIGN THINKING FOR USER EXPERIENCE DESIGN + PROTOTYPING + EVALUATION This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. To view a copy

More information

User Interface Programming OOP/Java Primer. Step 3 - documentation

User Interface Programming OOP/Java Primer. Step 3 - documentation User Interface Programming OOP/Java Primer Step 3 - documentation Department of Information Technology Uppsala University What is the documentation? Documentation about program in the program Clearly written

More information

Introduction to C. Sami Ilvonen Petri Nikunen. Oct 6 8, CSC IT Center for Science Ltd, Espoo. int **b1, **b2;

Introduction to C. Sami Ilvonen Petri Nikunen. Oct 6 8, CSC IT Center for Science Ltd, Espoo. int **b1, **b2; Sami Ilvonen Petri Nikunen Introduction to C Oct 6 8, 2015 @ CSC IT Center for Science Ltd, Espoo int **b1, **b2; /* Initialise metadata */ board_1->height = height; board_1->width = width; board_2->height

More information

STEAM Clown Productions

STEAM Clown Productions CPA: Programing in C Developed As Additional Instructor Led Slides For CPA: Programing Essentials In C Cisco NetAcademy https://www.netacad.com/ Supplemental Slides Developed by topclown@steamclown.org

More information

11 Coding Standards CERTIFICATION OBJECTIVES. Use Sun Java Coding Standards

11 Coding Standards CERTIFICATION OBJECTIVES. Use Sun Java Coding Standards 11 Coding Standards CERTIFICATION OBJECTIVES Use Sun Java Coding Standards 2 Chapter 11: Coding Standards CERTIFICATION OBJECTIVE Use Sun Java Coding Standards Spacing Standards The Developer exam is challenging.

More information

Good Coding Practices Spring 2018

Good Coding Practices Spring 2018 CS18 Integrated Introduction to Computer Science Fisler, Nelson Contents Good Coding Practices Spring 2018 1 Introduction 1 2 The Don ts 1 3 The Dos 4 4 CS 18-Specific Practices 5 5 Style 6 1 Introduction

More information

Objectives. Problem Solving. Introduction. An overview of object-oriented concepts. Programming and programming languages An introduction to Java

Objectives. Problem Solving. Introduction. An overview of object-oriented concepts. Programming and programming languages An introduction to Java Introduction Objectives An overview of object-oriented concepts. Programming and programming languages An introduction to Java 1-2 Problem Solving The purpose of writing a program is to solve a problem

More information

CLIENT-SIDE PROGRAMMING

CLIENT-SIDE PROGRAMMING CLIENT-SIDE PROGRAMMING George Porter Apr 11, 2018 ATTRIBUTION These slides are released under an Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) Creative Commons license These slides

More information

Tutorial Ten Residence Time Distribution

Tutorial Ten Residence Time Distribution Residence Time Distribution 4 th edition, Jan. 2018 This offering is not approved or endorsed by ESI Group, ESI-OpenCFD or the OpenFOAM Foundation, the producer of the OpenFOAM software and owner of the

More information

CUSTOMIZING GUIDES USING ADOBE FLASH BUILDER. Note, this document will be updated for version 10.0 soon.

CUSTOMIZING GUIDES USING ADOBE FLASH BUILDER. Note, this document will be updated for version 10.0 soon. CUSTOMIZING GUIDES USING ADOBE FLASH BUILDER Note, this document will be updated for version 10.0 soon. Copyright 2010 Adobe Systems Incorporated and its licensors. All rights reserved. Customizing Guides

More information