diff options
author | Aleksey Kladov <[email protected]> | 2020-10-16 11:50:09 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-10-16 11:50:09 +0100 |
commit | 0c67edc0f7ebb7e6a265d4a925bc368e460cd8cb (patch) | |
tree | c0bec28be51fb28d6e92069388b2434e32c076b1 /docs | |
parent | 1de202010948c94658235f7cfe9b25dda0c7ddf3 (diff) |
Expand code order section
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/style.md | 61 |
1 files changed, 50 insertions, 11 deletions
diff --git a/docs/dev/style.md b/docs/dev/style.md index 883a6845d..7a64a0d22 100644 --- a/docs/dev/style.md +++ b/docs/dev/style.md | |||
@@ -366,27 +366,66 @@ People read things from top to bottom, so place most important things first. | |||
366 | 366 | ||
367 | Specifically, if all items except one are private, always put the non-private item on top. | 367 | Specifically, if all items except one are private, always put the non-private item on top. |
368 | 368 | ||
369 | Put `struct`s and `enum`s first, functions and impls last. | ||
370 | |||
371 | Do | ||
372 | |||
373 | ```rust | 369 | ```rust |
374 | // Good | 370 | // Good |
375 | struct Foo { | 371 | pub(crate) fn frobnicate() { |
376 | bars: Vec<Bar> | 372 | Helper::act() |
373 | } | ||
374 | |||
375 | #[derive(Default)] | ||
376 | struct Helper { stuff: i32 } | ||
377 | |||
378 | impl Helper { | ||
379 | fn act(&self) { | ||
380 | |||
381 | } | ||
382 | } | ||
383 | |||
384 | // Not as good | ||
385 | #[derive(Default)] | ||
386 | struct Helper { stuff: i32 } | ||
387 | |||
388 | pub(crate) fn frobnicate() { | ||
389 | Helper::act() | ||
377 | } | 390 | } |
378 | 391 | ||
379 | struct Bar; | 392 | impl Helper { |
393 | fn act(&self) { | ||
394 | |||
395 | } | ||
396 | } | ||
380 | ``` | 397 | ``` |
381 | 398 | ||
382 | rather than | 399 | If there's a mixture of private and public items, put public items first. |
400 | If function bodies are folded in the editor, the source code should read as documentation for the public API. | ||
401 | |||
402 | Put `struct`s and `enum`s first, functions and impls last. Order types declarations in top-down manner. | ||
383 | 403 | ||
384 | ```rust | 404 | ```rust |
405 | // Good | ||
406 | struct Parent { | ||
407 | children: Vec<Child> | ||
408 | } | ||
409 | |||
410 | struct Child; | ||
411 | |||
412 | impl Parent { | ||
413 | } | ||
414 | |||
415 | impl Child { | ||
416 | } | ||
417 | |||
385 | // Not as good | 418 | // Not as good |
386 | struct Bar; | 419 | struct Child; |
387 | 420 | ||
388 | struct Foo { | 421 | impl Child { |
389 | bars: Vec<Bar> | 422 | } |
423 | |||
424 | struct Parent { | ||
425 | children: Vec<Child> | ||
426 | } | ||
427 | |||
428 | impl Parent { | ||
390 | } | 429 | } |
391 | ``` | 430 | ``` |
392 | 431 | ||