Is this a known pattern?
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
shouldn't it be
List users = FetchAllUsersWhereAgeGreaterThan( int minimumAge )
that is called OOP.
regards Torsten When I'm not working
-
shouldn't it be
List users = FetchAllUsersWhereAgeGreaterThan( int minimumAge )
that is called OOP.
regards Torsten When I'm not working
Shouldn't that be
List users = FetchAllUsersWhereAgeGreaterThan( int minimumAge );
I assumed it was originally the method declaration, rather than the use, myself.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
Call it the Nick Fetch Pattern. Make it part of the Nick Sterling Framework. Trade mark it, develop some course work, cash in on consulting. Developer 1: What framework are you using? Developer 2: I'm using the Sterling Framework. Developer 1: Was that the one developed by Nick? Developer 2: Heck ya. Developer 1: I wish I could afford it. Developer 2: With the student discount it's only $899.00 Developer 1: Swwweeeeeeet! Don't worry about content. That's why there is marketing.
-
Shouldn't that be
List users = FetchAllUsersWhereAgeGreaterThan( int minimumAge );
I assumed it was originally the method declaration, rather than the use, myself.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
Yes, it was - thanks :)
-
Call it the Nick Fetch Pattern. Make it part of the Nick Sterling Framework. Trade mark it, develop some course work, cash in on consulting. Developer 1: What framework are you using? Developer 2: I'm using the Sterling Framework. Developer 1: Was that the one developed by Nick? Developer 2: Heck ya. Developer 1: I wish I could afford it. Developer 2: With the student discount it's only $899.00 Developer 1: Swwweeeeeeet! Don't worry about content. That's why there is marketing.
Excellent idea - ta :) Do you think "Nick Needs Sterling" is giving too much away? Nick
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
Nicholas Butler wrote:
List<User> users = DAL.User.FetchAll( where: user => user.Age > 21 );
Sadly, I like it! :thumbsup:
-
Nicholas Butler wrote:
List<User> users = DAL.User.FetchAll( where: user => user.Age > 21 );
Sadly, I like it! :thumbsup:
leppie wrote:
Sadly, I like it! :thumbsup:
Thanks
leppie
. The more I use it, the more I like it too :) Just can't find a good name for it... Nick -
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
It's known as PNAMUT - Pretentious Name for Muddling Through. Sorry :-O The purpose of the data layer method (as you call it) is to protect the application against changes; e.g. a new privacy regulation mandates you may not track age, only states such as "above minimum drinking age". (before anyone barks back please consider that I nowhere endorsed or condemned either method)
FILETIME to time_t
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy -
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
The closest version of this that I could see without contemplating my navel would be an Identity Map. It's not a 100% fit, but it does fit some of your intent.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
Suggestion: Predicated Queries/Query
Henry Minute Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.” I wouldn't let CG touch my Abacus! When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is. Cogito ergo thumb - Sucking my thumb helps me to think.
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
I like to call it poor programming. But I am outnumbered in the MS world.
Need custom software developed? I do custom programming based primarily on MS tools with an emphasis on C# development and consulting. I also do Android Programming as I find it a refreshing break from the MS. "And they, since they Were not the one dead, turned to their affairs" -- Robert Frost
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
As an alternative, it also looks a bit like a Query Object - mapping onto a Repository pattern.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
I'm thinking condition-based programming. I'm not sure if I just made that up right now though. Also, isn't that exactly the type of thing you can already do with a Linq query? It is elegant, just like Linq, and it's a good thing to do as long as you can implement it in such a way that the condition is only executed as little as possible, and you don't have to load the whole potential result set into memory and then filter it. It's more functional programming than declarative, I think. In languages where functions are first class objects (e.g. Javascript) it is more common to pass filter functions or other types of function (for example a sort order comparator) around and potentially declare them locally as you have done here. What you're passing in the 'where' parameter is a pure function.
-
It's known as PNAMUT - Pretentious Name for Muddling Through. Sorry :-O The purpose of the data layer method (as you call it) is to protect the application against changes; e.g. a new privacy regulation mandates you may not track age, only states such as "above minimum drinking age". (before anyone barks back please consider that I nowhere endorsed or condemned either method)
FILETIME to time_t
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchypeterchen wrote:
It's known as PNAMUT - Pretentious Name for Muddling Through.
Correct, but not very catchy :)
peterchen wrote:
The purpose of the data layer method (as you call it) is to protect the application against changes; e.g. a new privacy regulation mandates you may not track age, only states such as "above minimum drinking age".
That was a contrived example but I agree: it's certainly not High Church. Nick
-
The closest version of this that I could see without contemplating my navel would be an Identity Map. It's not a 100% fit, but it does fit some of your intent.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
Interesting. I have also implemented this in my framework, but I just called it caching. Nick
-
Suggestion: Predicated Queries/Query
Henry Minute Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.” I wouldn't let CG touch my Abacus! When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is. Cogito ergo thumb - Sucking my thumb helps me to think.
-
Interesting. I have also implemented this in my framework, but I just called it caching. Nick
Nicholas Butler wrote:
I just called it caching
Most people do. First law of patterns. They are a fancy name for stuff you already do.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
I'm thinking condition-based programming. I'm not sure if I just made that up right now though. Also, isn't that exactly the type of thing you can already do with a Linq query? It is elegant, just like Linq, and it's a good thing to do as long as you can implement it in such a way that the condition is only executed as little as possible, and you don't have to load the whole potential result set into memory and then filter it. It's more functional programming than declarative, I think. In languages where functions are first class objects (e.g. Javascript) it is more common to pass filter functions or other types of function (for example a sort order comparator) around and potentially declare them locally as you have done here. What you're passing in the 'where' parameter is a pure function.
BobJanova wrote:
Also, isn't that exactly the type of thing you can already do with a Linq query?
Yes, it's certainly like Linq :-D The difference is that it may or may not cause a Linq-to-Entities query to run and hit the database server.
BobJanova wrote:
It's more functional programming than declarative, I think.
Yes, I suppose it is. I was focused on making it easy to use rather than the programming paradigm. Thanks, Nick
-
I'm having difficulty finding a name for a style of programming. You can make one up if you like, but I'd prefer something that is already documented :) I've written a layer over the Entity Framework that allows the application code to pass parameters into the data layer that shape the returned result sets. So you can write something like this:
List users = DAL.User.FetchAll( where: user => user.Age > 21 );
It's declarative programming, but I was looking for a more specific name. Something like "locality of intent". Basically, you say what you need in the place where you need it. It's the opposite of having a data layer method like this:
List FetchAllUsersWhereAgeGreaterThan( int minimumAge )
Is this a known pattern? I've run out of obvious words to Google. Ta, Nick
I don't know if it's known or not. You could call it "Query Mapper"
If your actions inspire others to dream more, learn more, do more and become more, you are a leader." - John Quincy Adams
You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering” - Wernher von Braun