Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C chouette-core
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 36
    • Merge requests 36
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Administrator
  • chouette-core
  • Wiki
  • Coding Conventions

Last edited by Robert Dober Nov 24, 2017
Page history

Coding Conventions

Coding Conventions

Do not use Class Instance Variables

They are not doing what one would expect and they violate the Liskov Principle

Example:

[136] pry(File):1> class A
[136] pry(File):1*   cattr_accessor :a 
[136] pry(File):1* end  
=> [:a]
[137] pry(File):1> class B < A
[137] pry(File):1*   cattr_accessor :a
[137] pry(File):1* end  
=> [:a]
[138] pry(File):1> class C < A
[138] pry(File):1*   cattr_accessor :a
[138] pry(File):1* end  
=> [:a]
[139] pry(File):1> C.a
=> nil
[140] pry(File):1> A.a = 42
=> 42
[141] pry(File):1> C.a
=> 42
[142] pry(File):1> A.a
=> 42
[143] pry(File):1> B.a
=> 42
[144] pry(File):1> B.a = 84
=> 84
[145] pry(File):1> A.a
=> 84
[146] pry(File):1> C.a
=> 84
[147] pry(File):1>

What you want to do is this:

[17] pry(main)> class A
[17] pry(main)*   class << self
[17] pry(main)*     attr_accessor :a
[17] pry(main)*   end  
[17] pry(main)* end  
=> nil
[18] pry(main)> class B < A
[18] pry(main)*   class << self  
[18] pry(main)*     attr_accessor :a    
[18] pry(main)*   end  
[18] pry(main)* end  
=> nil
[19] pry(main)> class C < A
[19] pry(main)*   class << self  
[19] pry(main)*     attr_accessor :a    
[19] pry(main)*   end  
[19] pry(main)* end  
Clone repository

Architecture

  • Data Models
  • Class Diagram

Install and configure

  • installation manual
  • Optional Feature flags
  • Policy management (TODO)

Best practices in code

Rails code rules

  • Writing a migration
  • Writing a model
  • Writing a controller
  • Writing a view
  • Writing a policy (TODO)
  • Writing a feature (TODO)
  • I18n

Test code rules

  • Writing a spec
  • Writing a javascript test

Exchange format

Neptune

  • Import TODO
  • Export TODO

GTFS

  • Import
  • Export

Netex

  • Import TODO
  • Export TODO