Comments (9)
pub struct DoSomething<..> { ..paramaters.. }
impl<..> DoSomething<..> {
pub fn go(self) { ... }
}
And choose the parameter names well, so that you can maximize field puns.
If you're okay with nightly then #![feature(unboxed_closures)]
and #![feature(fn_traits)]
let you write DoSomething { .. }()
but imho that's kinda a poor reason for going to nightly.
from patterns.
My first thought would be, would it make sense for the parameters to be part of a struct that you construct and pass in? It would depend on what the actual parameters represent of course.
Another option could potentially be the builder pattern. Something like this:
foo()
.parameter_0(1)
.parameter_1(2)
.parameter_2(3)
.parameter_3(4)
.parameter_4(5)
.parameter_5(6)
.parameter_6(7)
.build();
EDIT: See #64 for reasons against builder patterns for some use cases.
from patterns.
@longfellowone Do you have a required flow of the parameters?
Then there could be multiple structs (like a state machine) to ensure them have each mandatory parameter. Like most of the http crates that we have, it is required to have a url before sending.
from patterns.
My first thought would be, would it make sense for the parameters to be part of a struct that you construct and pass in? It would depend on what the actual parameters represent of course.
Another option could potentially be the builder pattern. Something like this:
foo() .parameter_0(1) .parameter_1(2) .parameter_2(3) .parameter_3(4) .parameter_4(5) .parameter_5(6) .parameter_6(7) .build();EDIT: See #64 for reasons against builder patterns for some use cases.
And how would you deal with mandatory parameters?
from patterns.
And how would you deal with mandatory parameters?
I don't think I'd use it in that case.
from patterns.
And how would you deal with mandatory parameters?
foo("mandatory1", "mandatory2")
.parameter_0(1)
.parameter_1(2)
.parameter_2(3)
.parameter_3(4)
.parameter_4(5)
.parameter_5(6)
.parameter_6(7)
.build();
from patterns.
I am thinking about how to solve this issue.
Maybe we can have an anti-pattern called "Too Many Arguments In Functions"?
It could explain all the approaches proposed in this issue.
from patterns.
And how would you deal with mandatory parameters?
foo("mandatory1", "mandatory2") .parameter_0(1) .parameter_1(2) .parameter_2(3) .parameter_3(4) .parameter_4(5) .parameter_5(6) .parameter_6(7) .build();
What I have is a mathematical calculation that requires about 7 mandatory parameters that have no reasonable defaults. And 5 parameters that are optional
from patterns.
Put those 7 parameters in a struct and give the struct to foo
from patterns.
Related Issues (20)
- Floating Point Related Idioms HOT 1
- Add double panic mentioning for RAII guards HOT 1
- Clarify parts of Lenses and Prisms chapter HOT 11
- Borrow Checker Patterns HOT 2
- Clarify paragraph in Generics as Type Classes
- Clarify naming convention of `build()` in section 3.2.1 HOT 1
- Design Patterns, Strategy has unclear identifier `Context` and `run` mentioned. HOT 1
- View type
- Translations HOT 6
- Incorrect text in Command pattern description
- Translation: Persian HOT 5
- Is this example wrong ? HOT 1
- Printing the book should not inherit theme colours HOT 1
- Extract code into runnable Rust files HOT 4
- Translate: Vietnamese HOT 2
- Typo in idioms/coercion-arguments.md HOT 3
- Add pdf renderer and link rendered book
- Consistent Headline Capitalization? HOT 1
- Incompatible definition of Mutex::lock (or MutexGuard)
- Foo Bar (ad nauseam)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from patterns.