File tree Expand file tree Collapse file tree 1 file changed +40
-1
lines changed Expand file tree Collapse file tree 1 file changed +40
-1
lines changed Original file line number Diff line number Diff line change @@ -806,9 +806,48 @@ if let Some(expected_type) = ctx.expected_type.as_ref() {
806806}
807807```
808808
809- ** Rational :** ` match ` is almost always more compact.
809+ ** Rationale :** ` match ` is almost always more compact.
810810The ` else ` branch can get a more precise pattern: ` None ` or ` Err(_) ` instead of ` _ ` .
811811
812+ ## Helper Functions
813+
814+ Avoid creating singe-use helper functions:
815+
816+ ``` rust
817+ // GOOD
818+ let buf = {
819+ let mut buf = get_empty_buf (& mut arena );
820+ buf . add_item (item );
821+ buf
822+ };
823+
824+ // BAD
825+
826+ let buf = prepare_buf (& mut arena , item );
827+
828+ ...
829+
830+ fn prepare_buf (arena : & mut Arena , item : Item ) -> ItemBuf {
831+ let mut res = get_empty_buf (& mut arena );
832+ res . add_item (item );
833+ res
834+ }
835+ ```
836+
837+ Exception: if you want to make use of ` return ` or ` ? ` .
838+
839+ ** Rationale:** single-use functions change frequently, adding or removing parameters adds churn.
840+ A block serves just as well to delineate a bit of logic, but has access to all the context.
841+ Re-using originally single-purpose function often leads to bad coupling.
842+
843+ ## Helper Variables
844+
845+ Introduce helper variables freely, especially for multiline conditions.
846+
847+ ** Rationale:** like blocks, single-use variables are a cognitively cheap abstraction, as they have access to all the context.
848+ Extra variables help during debugging, they make it easy to print/view important intermediate results.
849+ Giving a name to a condition in ` if ` expression often improves clarity and leads to a nicer formatted code.
850+
812851## Token names
813852
814853Use ` T![foo] ` instead of ` SyntaxKind::FOO_KW ` .
You can’t perform that action at this time.
0 commit comments