Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/palash25/best-practices-checklist

A list of awesome idiomatic code resources. Rust:crab:, Go, Ruby:gem:, Pony :horse:, Ocaml :camel:, Erlang and more
https://github.com/palash25/best-practices-checklist

best-practices idioms polyglot-dev software-design software-development

Last synced: about 2 months ago
JSON representation

A list of awesome idiomatic code resources. Rust:crab:, Go, Ruby:gem:, Pony :horse:, Ocaml :camel:, Erlang and more

Awesome Lists containing this project

README

        

# Best Practices Checklist

## Table of Contents

- [Best Practices Checklist](#best-practices-checklist)
- [What is this](#what-is-this)
- [Why this repo](#why-this-repo)
- [What counts as an acceptable entry](#what-counts-as-an-acceptable-entry)
- [Language Specific Resources](#language-specific-resources)
- [C](#c)
- [C++](#c-1)
- [Clojure](#clojure)
- [Common Lisp](#common-lisp)
- [C#](#csharp)
- [D](#d)
- [Dart](#dart)
- [Erlang](#erlang)
- [Elixir](#elixir)
- [F#](#fsharp)
- [Go](#go)
- [Groovy](#groovy)
- [Haskell](#haskell)
- [HTML/CSS](#htmlcss)
- [Java](#java)
- [Javascript](#javascript)
- [Kotlin](#kotlin)
- [Nim](#nim)
- [Objective-C](#objective-c)
- [OCaml](#ocaml)
- [Pony](#pony)
- [Prolog](#prolog)
- [Python](#python)
- [R](#r)
- [Ruby](#ruby)
- [Rust](#rust)
- [Scala](#scala)
- [Shell](#shell)
- [SQL](#sql)
- [Swift](#swift)
- [Vimscript](#vimscript)
- [XML](#xml)
- [Zig](#zig)

## What is this?

This is a collection of language specific resources that can be used to look up the best practices followed by a particular language's community.

## Why does this repo exist?

I dabble into multiple programming languages and I wanted to have a central place that I can refer to whenever I am looking up best practices for a particular language.

## What counts as an acceptable entry?

It could be anything from articles to books to videos that describes:

- how to write idiomatic code in a particular language
- what build systems / package managers to use and the best practices surrounding these aforementioned tools
- how to good write unit/integration tests
- different styles, design patterns & idioms of a language
- new language section (if you find that the resources for your favourite language are missing feel free to create a new section and add them)

**Note:** If you are adding a book to the list make sure that it is a free ebook. Amazon links to buy books will not be accepted.

## Language Specific Resources

### C

- [C Coding Style](https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en)
- [C Style](https://github.com/mcinglis/c-style)
- [Making The Best Use of C](https://www.gnu.org/prep/standards/html_node/Writing-C.html)
- [Recommended C Style and Coding Standards](https://www.doc.ic.ac.uk/lab/cplus/cstyle.html)

### C++

- [ISO C++ Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)
- [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
- [Mozilla Style Guide](https://firefox-source-docs.mozilla.org/tools/lint/coding-style/coding_style_cpp.html)
- [C++ style guide (Fuchsia)](https://fuchsia.dev/fuchsia-src/development/languages/c-cpp/cpp-style)

### Clojure

- [Clojure Style Guide](https://github.com/bbatsov/clojure-style-guide)

### Common Lisp

- [Standard CL Symbols](https://www.hexstreamsoft.com/articles/notes-tips-standard-common-lisp-symbols/)
- [Google Common Lisp Style Guide](https://google.github.io/styleguide/lispguide.xml)

### CSharp

- [Open-source library guidance](https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/)
- [C# Programming guide](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/)
- [.NET Microservices: Architecture for Containerized .NET Applications](https://docs.microsoft.com/en-us/dotnet/architecture/microservices/)
- [C# Coding conventions](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions)
- [Unit testing in .NET Core and .NET Standard](https://docs.microsoft.com/en-us/dotnet/core/testing/)
- [Google C# Style Guide](https://google.github.io/styleguide/csharp-style.html)
- [ASP.NET Core Performance Best Practices](https://docs.microsoft.com/en-us/aspnet/core/performance/performance-best-practices?view=aspnetcore-5.0)

### D

- [The D Style](https://dlang.org/dstyle.html)
- [Pragmatic D Tutorial: Idiomatic D](https://qznc.github.io/d-tut/idiomatic.html)

### Erlang

- [Spawned Shelter (a list of various Erlang resources)](http://spawnedshelter.com)
- [Erlang Patterns (the site is no longer accessible but one can read the md files in the repo)](https://github.com/gar1t/erlang-patterns)

### Elixir

- [Fast Elixir - Idioms for writing performant code](https://github.com/devonestes/fast-elixir)
- [Credo's Elixir Style Guide](https://github.com/rrrene/elixir-style-guide)
- [The Zen of Elixir](https://github.com/tony612/the-zen-of-elixir)

### FSharp

- [F# style guide](https://learn.microsoft.com/en-us/dotnet/fsharp/style-guide/)
- [Effective F#, tips and tricks ](https://gist.github.com/swlaschin/31d5a0a2c4478e82e3ed60d653c0206b)

### Go

- [Google's Go Style Guide](https://google.github.io/styleguide/go/)
- [Clean Go](https://github.com/Pungyeon/clean-go-article)
- [Idiomatic Go - Sourcegraph](https://about.sourcegraph.com/go/idiomatic-go)
- [Idiomatic Go - by dmitshur](https://dmitri.shuralyov.com/idiomatic-go)
- [Go package style guide by Rakyll](https://rakyll.org/style-packages/)
- [Go Advice](https://github.com/cristaloleg/go-advice)
- [Domain Driven Design in Go](https://github.com/marcusolsson/goddd)
- [Effective Go](https://golang.org/doc/effective_go.html)
- [How to Write Go Code](https://golang.org/doc/code.html)
- [The Uber Go Style Guide](https://github.com/uber-go/guide)
- [Golang Standards](https://github.com/golang-standards/project-layout)
- [Advanced Testing Patterns Talk](https://www.youtube.com/watch?v=8hQG7QlcLBk)

### Groovy

- [Style guide](https://groovy-lang.org/style-guide.html)

### Haskell

- [Programming Guidelines](https://wiki.haskell.org/Programming_guidelines)
- [Things to Avoid](https://wiki.haskell.org/Haskell_programming_tips)
- [Useful Idioms](https://wiki.haskell.org/Blow_your_mind)
- [Haskell Mini Patterns Book](https://kowainik.github.io/posts/haskell-mini-patterns)

### Java

- [Principles of Lean Java](http://www.ameyalokare.com/software/2018/01/13/lean-java-principles.html)
- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)
- [Java Code Conventions](https://www.oracle.com/technetwork/java/codeconventions-150003.pdf)

### Kotlin

- [Coding Conventions](https://kotlinlang.org/docs/reference/coding-conventions.html)
- [Google Kotlin Style Guide for Android](https://developer.android.com/kotlin/style-guide)

### Nim

- [Nim Style Guide](https://nim-lang.org/docs/nep1.html)
- [Nim Notes](https://scripter.co/notes/nim)

### OCaml

- [OCaml Style Guide](https://github.com/lindig/ocaml-style)

### Pony

- [Pony Patterns](https://patterns.ponylang.io/)

### Python

- [Hitchhiker's Guide to Python](https://docs.python-guide.org/)
- [Python API Checklist](https://github.com/vintasoftware/python-api-checklist)
- [Design Patterns Implementations](https://github.com/faif/python-patterns)
- [PEP8](https://www.python.org/dev/peps/pep-0008/)
- [Elements Of Python Style](https://github.com/amontalenti/elements-of-python-style)
- [Design Patterns Toptal Blog Post](https://www.toptal.com/python/python-design-patterns)
- [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html)
- [Mozilla Style Guide](https://firefox-source-docs.mozilla.org/tools/lint/coding-style/coding_style_python.html)
- [Python style guide (Fuchsia)](https://fuchsia.dev/fuchsia-src/development/languages/python/python_style)

### Ruby

- [RSpec Best Practices](https://github.com/abinoda/rspec-best-practices)
- [Let’s Read! — Eloquent Ruby](https://medium.com/@baweaver/lets-read-eloquent-ruby-ch-1-b2115d1416a6)
- [Ruby Style Guide](https://rubystyle.guide/)
- [Best Ruby](http://franzejr.github.io/best-ruby/)
- [Fast Ruby - Idioms for writing performant code](https://github.com/JuanitoFatas/fast-ruby)

### Rust

- [Elements of Rust](https://github.com/ferrous-systems/elements-of-rust)
- [Official Rust Guidelines](https://github.com/rust-lang/api-guidelines)
- [Rust Language Cheat Sheet](https://cheats.rs/)
- [Rust Cookbook](https://rust-lang-nursery.github.io/rust-cookbook/)
- [Rust By Example](https://doc.rust-lang.org/rust-by-example/macros/overload.html)
- [Cargo Guide](https://doc.rust-lang.org/cargo/guide/)
- [Idiomatic Rust](https://github.com/mre/idiomatic-rust)
- [Unsafe Code Guidelines](https://rust-lang.github.io/unsafe-code-guidelines/)
- [Rust Performance Book](https://nnethercote.github.io/perf-book/title-page.html)
- [Rust Fuzz Book](https://rust-fuzz.github.io/book/introduction.html)
- [Test Idioms](https://github.com/spacejam/test-idioms) (an example crate showcasing idiomatic test layout for Rust projects)
- [List of Idiomatic Rust Resources by Corrode](https://corrode.dev/blog/idiomatic-rust-resources/)
- [Maintenance Checklist for Production Grade Rust Codebases by Corrode](https://corrode.notion.site/Rust-Maintenance-Checklist-3fa116db4c6149cbacbe3c16f81c6bb0)
- [Secure Rust Guidelines](https://anssi-fr.github.io/rust-guide/)

### Scala

- [Scala Idioms](https://leanpub.com/scalaidioms/read)
- [Scala Best Practice Idioms](https://alvinalexander.com/scala/scala-best-practices-idioms-cookbook)
- [Scala School](https://twitter.github.io/scala_school/)

### Javascript

- [Eloquent Javascript](http://eloquentjavascript.net/)
- [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS)
- [JS: The Right Way](https://jstherightway.org/)
- [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)
- [Mozilla Style Guide](https://firefox-source-docs.mozilla.org/tools/lint/coding-style/coding_style_js.html)
- [An AngularJS Style Guide for Closure Users at Google](https://google.github.io/styleguide/angularjs-google-style.html)
- [Airbnb Style Guide](https://github.com/airbnb/javascript)

### Dart

- [Effective Dart](https://dart.dev/guides/language/effective-dart)
- [Dart style guide (Fuchsia)](https://fuchsia.dev/fuchsia-src/development/languages/dart/style)
- [Style guide for Flutter repo](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo)

### SQL

- [SQL Style Guide by Simon Holywell](https://www.sqlstyle.guide)

### Objective-C

- [Google Objective-C Style Guide](https://google.github.io/styleguide/objcguide.html)

### Swift

- [Google Swift Style Guide](https://google.github.io/swift/)

### R

- [Google R Style Guide](https://google.github.io/styleguide/Rguide.html)

### Shell

- [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)

### HTML/CSS

- [Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)

### Vimscript

- [Google Vimscript Style Guide](https://google.github.io/styleguide/vimscriptguide.xml)

### XML

- [Google XML Style Guide](https://google.github.io/styleguide/xmlstyle.html)

### Zig
- [Zig Design Patterns](https://github.com/SuperAuguste/zig-patterns)

### Prolog
- TODO