> On 24 Mar 2017, at 10:50, Haravikk via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> 
>> On 23 Mar 2017, at 21:10, Vladimir.S via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> On 23.03.2017 21:21, Matthew Johnson via swift-evolution wrote:
>>> 
>>>> On Mar 23, 2017, at 1:12 PM, Charles Srstka via swift-evolution
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> MOTIVATION:
>>>> 
>>>> In current Swift, a pattern has emerged among some developers, in
>>>> order to logically group parts of a class or struct’s declaration,
>>>> particularly around protocols:
>> >> ...
>>>> 
>>>> What do you think?
>>> 
>>> If we wanted to allow code like this to be written we wouldn’t need a
>>> new keyword to do it.  You are proposing two things here:
>>> 
>>> 1) Allow stored properties in same-module extensions.  This has been
>>> discussed in the past and is a possibility, but I suspect it is not in
>>> scope for consideration during Swift 4.
>> 
>> Are we really expect to have stored properties in same-module extensions?
>> As I remember, there a lot of questions were raised during discussions so 
>> for some reason *I* had a feeling that we should not expect this happens in 
>> near feature. Probably I missed something.
> 
> I can see why some people might want to do stored properties in extensions to 
> structure things, but personally I quite like the lack of flexibility as it 
> encourages the initial type declaration to focus on what a type contains, 
> while extensions focus on what it does. I've really taken to that style, as I 
> now almost never declare methods or computed properties in an initial type 
> declaration, unless it's a very simple one; instead doing all my methods and 
> protocol conformances in their own extensions.
> 
> i.e- I quite like that by the time you've finished your type declaration you 
> have finalised what its size will be, and nothing else can change that, 
> spreading it out feels like it could make that more confusing. It also IMO 
> helps to encourage you to keep a type's contents fairly simple, as you can 
> see in one place if you've made it very complicated.
> 
> I suppose there's an argument for having the freedom to do it however you 
> want, but I don't think spreading out across a module is a good idea; unless 
> we're assuming that module in this context applies like in other proposals, 
> where fileprivate is a "module" with only one file.
> 
> I dunno, I just think that as a pattern the current requirement to keep 
> stored properties within a type declaration enforces some good practices. I 
> found it a bit jarring at first too, but after adapting to the type + 
> extensions style I find I actually really like doing things that way.
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>

If you have a complex class (especially in UI code), you sometimes don’t really 
care about the size of the class and would prefer data to be grouped in broader 
functional groups. For example, I might like my toolbar-related iVars to be in 
one extension, and my datasource-related iVars in another, maybe with a couple 
of protocol conformances with require the odd state variable.

Requiring all of the stored properties live in the initial declaration means 
that the code is ultimately less clear: instead of being locally-declared (and 
perhaps even privately-scoped), the variable is now thousands of lines away 
from the only place I want to access it directly and visible throughout my 
implementation for me to one day muck up its state.

Allowing stored extensions within the same file seems like a good compromise to 
me, especially if its “trivial” to implement ;) Perhaps we could require such 
types to have some special annotation or magic “ExtensionVariables” item, for 
the benefit of readability? Just trying to find what you’d feel would be 
acceptable.

- Karl
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to