Intro to Style Guides (Activity)
|Title||The Need for Style Guides|
|Overview||In this activity students will learn about why we need a style guide for team-based projects and compare style guides for a various projects. Based on this experience, students will develop a style guide for their team.|
|Prerequisite Knowledge||Knowledge of basic regular expressions is helpful to understand the checkstyle documentation.|
|Learning Objectives|| Upon completion of this activity, students will be able to:
Working by themselves on small projects convinces students that coding style his little relevance. As they begin work on HFOSS projects, they need to begin to build an appreciation for the place of a standardized coding style.
This topic is an opportunity for active debate about coding style, but is also a lesson in the need for accepting standards - even if they are not your preference.
The following activities should be completed by the student before coming to class:
- (30 minutes) This article talks about the need for a coding standard
- (30 minutes) Read about the Google Style Guide
- (optional 15 minutes) Read this article about style versus standards
- (90 minutes) Checkstyle (http://checkstyle.sourceforge.net/) is one of a number of static analysis tools that provides a measure of the health of a codebase.
- Read the ~150 items checked, and determine if each should be included or excluded from the standards for your group project. For each item included, state appropriate parameters.
Ideas for in-class activities:
- Some checkstyle items are controversial, providing an opportunity for lively debate. See items in the following categories
- Have students work in their groups to compare their assessment of the checkstyle items. Each group should develop a single style for their work.
(optional) Install checkstyle for your favorite IDE:
(optional) Add checkstyle to your build (ant, maven, etc.)
- ant: http://checkstyle.sourceforge.net/anttask.html
- maven: https://maven.apache.org/plugins/maven-checkstyle-plugin/
- gradle: https://docs.gradle.org/current/userguide/checkstyle_plugin.html
What will the student hand in?
How will the activity be graded?
How will learning will be measured?
Include sample assessment questions/rubrics.
What should the instructor know before using this activity?
What are some likely difficulties that an instructor may encounter using this activity?
|Knowledge Area/Knowledge Unit||What ACM Computing Curricula 2013 https://www.acm.org/education/CS2013-final-report.pdf knowledge area and units does this activity cover?|
|Topic||What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf|
|Level of Difficulty||Is this activity easy, medium or challenging?|
|Estimated Time to Completion||How long should it take for the student to complete the activity?|
|Materials/Environment||What does the student need? Internet access, IRC client, Git Hub account, LINUX machine, etc.?|
|Author||Who wrote this activity?|
|Source||Is there another activity on which this activity is based? If so, please provide a link to the original resource.|
|License||Under which license is this material made available? (http://creativecommons.org/licenses/)|
Suggestions for the Open Source Project:
Suggestions for an open source community member who is working in conjunction with the instructor.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License