Re: Writing maintainable and extendable D2W rules
Re: Writing maintainable and extendable D2W rules
- Subject: Re: Writing maintainable and extendable D2W rules
- From: Anjo Krank <email@hidden>
- Date: Thu, 12 Nov 2009 22:57:28 +0100
I for my part try to:
- use what is already in the model:
(smartProp.type="String" && smartProp.size> 50) => use largeString
- put as much stuff in the model as possible, eg, I have entity.userInfo.SIZE=small|medium|large, which allows me to
(smartRel.destEnt.userInfo.SIZE='large') => componentName="Whatever"
- use parentEntity.name if possible
Otherwise I *mostly* group like (e=Father && (p=x || p=y)).
>> P.S: Is it possible to speak about "rule refactoring"?
Sure... it's not like the fight club?!
Cheers, Anjo
Am 12.11.2009 um 21:22 schrieb Mark Wardle:
> Not to hijack this thread but as a related issue, I wish I could add
> comments to my rule files.... It would be so helpful while learning...
>
> Mark
>
> 2009/11/12 Szántai Károly <email@hidden>:
>> Hi,
>>
>> What is the best practices for writing good, _maintainable_ and extendable
>> D2W rules? Especially in the left-hand side.
>>
>> What do I mean? Let's see a very simple example. Which of the following is
>> more maintainable, more extendable?
>>
>> This?
>>
>> 100: entity.name = 'Father' and task = 'edit' and propertyKey = 'firstName'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Father' and task = 'edit' and propertyKey = 'lastName'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Mother' and task = 'edit' and propertyKey = 'firstName'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Mother' and task = 'edit' and propertyKey = 'lastName'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Child' and task = 'edit' and propertyKey = 'firstName'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Child' and task = 'edit' and propertyKey = 'lastName' =>
>> componentName = "D2WEditString"
>>
>> Or this?
>>
>> 100: entity.name = 'Father' and task = 'edit' and (propertyKey = 'firstName'
>> or propertyKey = 'lastName') => componentName = "D2WEditString"
>> 100: entity.name = 'Mother' and task = 'edit' and (propertyKey = 'firstName'
>> or propertyKey = 'lastName') => componentName = "D2WEditString"
>> 100: entity.name = 'Child' and task = 'edit' and (propertyKey = 'firstName'
>> or propertyKey = 'lastName') => componentName = "D2WEditString"
>>
>> Or this?
>>
>> 100: entity.name = 'Father' and task = 'edit' and propertyKey like '*Name'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Mother' and task = 'edit' and propertyKey like '*Name'
>> => componentName = "D2WEditString"
>> 100: entity.name = 'Child' and task = 'edit' and propertyKey like '*Name' =>
>> componentName = "D2WEditString"
>>
>> Or this?
>>
>> 100: (entity.name = 'Father' or entity.name = 'Mother' or entity.name =
>> 'Child') and task = 'edit' and propertyKey = 'firstName' => componentName =
>> "D2WEditString"
>> 100: (entity.name = 'Father' or entity.name = 'Mother' or entity.name =
>> 'Child') and task = 'edit' and propertyKey = 'lastName' => componentName =
>> "D2WEditString"
>>
>> Or this?
>>
>> 100: (entity.name = 'Father' or entity.name = 'Mother' or entity.name =
>> 'Child') and task = 'edit' and (propertyKey = 'firstName' or propertyKey =
>> 'lastName') => componentName = "D2WEditString"
>>
>> Or this?
>>
>> 100: (entity.name = 'Father' or entity.name = 'Mother' or entity.name =
>> 'Child') and task = 'edit' and propertyKey like '*Name' => componentName =
>> "D2WEditString"
>>
>> Or this?
>>
>> 100: (entity.name like '*ther' or entity.name = 'Child') and task = 'edit'
>> and propertyKey like '*Name' => componentName = "D2WEditString"
>>
>>
>> I think all of them have pros and cons. The first one is very simple and
>> clean. The last one is very tricky and compact.
>>
>> What do you think?
>>
>>
>> Thanks
>>
>> Károly
>>
>> P.S: Is it possible to speak about "rule refactoring"?
>>
>>
>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>>
>>
>
>
>
> --
> Dr. Mark Wardle
> Specialist registrar, Neurology
> Cardiff, UK
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden