• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Followup - Re: Is there a pattern for creating an object with global scope?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Followup - Re: Is there a pattern for creating an object with global scope?


  • Subject: Re: Followup - Re: Is there a pattern for creating an object with global scope?
  • From: Tom Davie <email@hidden>
  • Date: Mon, 15 Apr 2013 11:44:56 +0100

On 15 Apr 2013, at 00:25, Graham Cox <email@hidden> wrote:

>
> On 14/04/2013, at 2:08 PM, YT <email@hidden> wrote:
>
>> My struggle is partially due to my lack of experience in OOP. I just have not written enough OO code as of yet.  AND I'm very new to Objective-C. Hence my lack of experience and working knowledge of Objective-C.
>>
>> extern int gFoobar;
>>
>> I understand that solution and its working for me right now.
>
>
> I understand how tempting it is to go with whatever you can get working, especially when you're new to something.
>
> But in this case I believe you should resist the temptation and try and gain a little more understanding before you get too far down this road.
>
> GLOBALS ARE BAD NEWS. That is a pretty good rule and well worth sticking to. If you can get rid of globals (and you always can) then you should avoid them. There is NO problem in application programming that requires a global to solve it. Singletons are a much safer and more predictable means of achieving something that has global scope but prevents the hidden state/parameters problem that globals bring with them.

Wow, I really can't get my head around this one.  You make bold statements like "GLOBALS ARE BAD NEWS" (which I 100% agree with), but then follow up with effectively "use singletons instead".  Singletons bring with them 95% of the problems globals bring.  They still break any attempts at threading, they still break any attempts at testing, they still break separation of concerns, and they're always avoidable.  So I'd follow up with SINGLETONS ARE BAD NEWS TOO!  In 95% of cases where you have a singleton, you should almost certainly be using dependancy injection instead, or some other method of avoiding it.

Note also – simply using your app delegate as a store for things that aren't singletons, but only one of them is pointed at by your app delegate is also horrific – you're just substituting one singleton for another.

Thanks

Tom Davie
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Followup - Re: Is there a pattern for creating an object with global scope?
      • From: Uli Kusterer <email@hidden>
    • Re: Followup - Re: Is there a pattern for creating an object with global scope?
      • From: Graham Cox <email@hidden>
References: 
 >Is there a pattern for creating an object with global scope? (From: YT <email@hidden>)
 >Followup - Re: Is there a pattern for creating an object with global scope? (From: YT <email@hidden>)
 >Re: Followup - Re: Is there a pattern for creating an object with global scope? (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: makeKeyAndOrderFront (not working)
  • Next by Date: Re: UITableCellView width decreases when scrolling
  • Previous by thread: Re: Followup - Re: Is there a pattern for creating an object with global scope?
  • Next by thread: Re: Followup - Re: Is there a pattern for creating an object with global scope?
  • Index(es):
    • Date
    • Thread