<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">Le 30 nov. 2016 à 16:00, João David via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Definetely the access control topic is highly contestable in the Swift scene but nevertheless I really strive for more flexibility in terms of how can I decouple and decompose my code arch among several source files.</div><div class="">As an example, I reckon that the current approach of attributing properties with fileprivate is somehow encouraging developers to workaround patterns like "protected" accessors into padding files with endless classes hierarchies and that’s one of the main reasons why I’m agains’t this fileprivate access modifier in the first place.</div><div class="">To sum up, I really strive for code with great encapsulation and this proposal is for sure marching in that direction.</div><div class=""><br class=""></div><div class="">If we can add extensibility to classes without break fundamental encapsulation rules while doing it in a organised way, without stuffing file sources with the whole class spectrum, we have a winner in my opinion.</div></div></div></blockquote><div><br class=""></div>If you add a typeprivate accessor, &nbsp;it means you expose your internal details to all extensions and so breaks encapsulation.</div><div>It also means that anybody who want to access your private var will just have to write an extension to expose it.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
&gt; Hello, everyone!<br class="">&gt; <br class="">&gt; I would like to introduce a new proposal to swift evolution, but first I<br class="">&gt; would love to run it by all of you so I get everyone's feedback and enrich<br class="">&gt; it.<br class="">&gt; <br class="">&gt; This proposal consists of introducing a new *typeprivate *access control<br class="">&gt; level which allows for members to be accessed in all extensions of a given<br class="">&gt; *type,* whether lying within or in another file.<br class="">&gt; <br class="">&gt; You'll find the proposal draft in:<br class="">&gt; <a href="https://github.com/goncaloalvarez/swift-evolution/blob/master/" class="">https://github.com/goncaloalvarez/swift-evolution/blob/master/</a><br class="">&gt; proposals/NNNN-introduce-typeprivate-access-control-level.md<br class="">&gt; <br class="">&gt; Thanks in advance for taking the time to evaluate the proposal.<br class="">&gt; <br class="">&gt; Best regards,<br class="">&gt; Gonçalo<br class="">&gt; <br class="">&gt; <br class="">&gt;<span class="Apple-converted-space">&nbsp;</span>

<br class=""><br class=""><div class="">
<div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div class=""><font color="#929292" style="font-size: 11px;" class=""><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); font-weight: bold;" class="">João David</span><br style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class=""><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">iOS&nbsp;</span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); font-style: italic;" class="">Software Architect</span><br style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class=""><a href="http://pt.linkedin.com/in/joaotdavid" target="_blank" style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">LinkedIn</a><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">&nbsp;| +351 933631927 | Skype: joaotdavid</span><br style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class=""><br style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class=""><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">Please visit the&nbsp;</span><a href="http://ciafel.fade.up.pt/isoparc" target="_blank" style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">iSOPARC</a><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">&nbsp;and&nbsp;</span></font><a href="http://ciafel.fade.up.pt/isofit" style="font-size: 11px;" class=""><font face="Arial" class="">iSOFIT</font></a><font color="#929292" style="font-size: 11px;" class=""><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255);" class="">&nbsp;for iPad application website.</span></font></div></div><div style="" class=""><br class=""></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br class=""></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></body></html>