[chef] Re: FC001, attributes as strings vs symbols


Chronological Thread 
  • From: "John E. Vincent (lusis)" < >
  • To:
  • Subject: [chef] Re: FC001, attributes as strings vs symbols
  • Date: Tue, 16 Oct 2012 16:43:04 -0400

On Tue, Oct 16, 2012 at 2:28 PM, Joshua Timberman 
< >
 wrote:
> Ohai, Chefs!
>
> We want to hear from you: which way of using node attributes do you prefer? 
> Please take this single question survey:
>
> http://www.surveygizmo.com/s3/1059291/FC001-Use-strings-in-preference-to-symbols-to-access-node-attributes
>
> This is in response to a longer twitter discussion today on the subject. 
> The survey will be left open for awhile, letting as many people as possible 
> answer. We *really* value this feedback.
>
> If you want an explanation of why this rule came about the way it did, and 
> our rationale for preferring strings to symbols, see this issue in the 
> Foodcritic project:
>
> https://github.com/acrmp/foodcritic/issues/1
>
> If you're going to be at the Chef summit next week, I'm happy to discuss 
> this in greater detail, too :-).

FWIW, since I was involved with this, I'll restate here:

I only prefer symbols from an aesthetic perspective. string keys just
don't stand out in most syntax highlighting regardless of the color
scheme in use 
(http://s3itch.s3.amazonaws.com/Screen_Shot_2012-10-16_at_4.28.14_PM-20121016-162843.jpg)

There are both downsides and upsides to using symbols -

(downside) symbols aren't GCd
(upside) only one copy of a given symbol exists in memory
(downside) symbols can't contain dashes without "effort"
(upside) everybody *I* know uses symbols ;)

Any arguments over symbol vs. string r.e. memory are largely silly
imho. It's like trying to optimize by only using double quotes when
doing interpolation and single quotes the rest of the time.

When I learned Ruby, the general rule of thumb I was given was to use
symbols for identifiers essentially. Countless articles try and go
over the differences between strings and symbols and in the end they
all just basically say "a symbol is an immutable string" (which
glosses over a lot but is fairly pragmatic in implementation).

I favor visual consistency and cringe when I see MIXED usage.
Interestingly enough I've been working with a lot of chef AND ruby
newbies and for the most part they all seem to prefer symbols over
strings. And of course they've been tripped up on the dash issue.

In the end I'd say while I prefer symbols, strings are probably the
best bet long term AND it would need to be enforced on the chef side
(not just some FC rule). That would raise holy hell though with older
cookbooks. Maybe in Chef 12 ;)



Archive powered by MHonArc 2.6.16.

§