# Guide for good programming style in Julia

**URL:** <https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980>\
**Category:** General Usage\
**Created:** [May 29, 2017, 9:08pm UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980 "2017-05-29T21:08:02Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![IljaK91](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iljak91/32/44301_2.png) [@IljaK91](https://discourse.julialang.org/u/IljaK91)\
**Post date:** [May 29, 2017, 9:08pm UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980/1 "2017-05-29T21:08:02Z")

</div>

I am looking for a guide that focuses on programming style in Julia. I understand how to write functions, use types, the syntax etc., but I look for a guide that focuses on questions like:

When I start a project with many files, how do I organize them? How should I include functions? How should I make sure that functions can call other functions? How do I organize the input/output of functions efficiently?

It would be a great help, if there was a compact source that answers these kind of questions.

Thank you very much!

---

<div class="post-metadata">

**Author:** ![jkbest2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jkbest2/32/7350_2.png) [@jkbest2](https://discourse.julialang.org/u/jkbest2)\
**Post date:** [May 29, 2017, 9:39pm UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980/2 "2017-05-29T21:39:30Z")

</div>

Have you read through

[https://docs.julialang.org/en/stable/manual/style-guide/](https://docs.julialang.org/en/stable/manual/style-guide/)

in the Julia documentation?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [May 30, 2017, 5:36am UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980/3 "2017-05-30T05:36:15Z")

</div>

It is customary to put projects in packages. `PkgDev.generate` will create a nice skeleton for your source and tests.

For include and module organization, see the [documentation](https://docs.julialang.org/en/latest/manual/modules.html#Modules-and-files-1).

For “how can I make sure” questions, the answer is usually a unit test.

---

<div class="post-metadata">

**Author:** ![smldis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/smldis/32/1735_2.png) [@smldis](https://discourse.julialang.org/u/smldis)\
**Post date:** [May 30, 2017, 6:53am UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980/4 "2017-05-30T06:53:18Z")

</div>

For examples on big structured packages look at Images.jl, DifferentialEquations.jl, Jump.jl, POMDPs.jl …  
It would be good to have a list of the good style choices of those packages.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [May 30, 2017, 7:24am UTC](https://discourse.julialang.org/t/guide-for-good-programming-style-in-julia/3980/5 "2017-05-30T07:24:17Z")

</div>

Personally I think the Documenter.jl package is very well designed, using many different modules:

[https://github.com/JuliaDocs/Documenter.jl](https://github.com/JuliaDocs/Documenter.jl)
