Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Synchronizing constants/enums in database and code

by jplindstrom (Monsignor)
on Apr 11, 2004 at 15:39 UTC ( [id://344261]=note: print w/replies, xml ) Need Help??


in reply to Synchronizing constants/enums in database and code

As you have already figured out, there should only be one single representation of a fact in the system (The DRY principle from the Pragmatic Programmers).

So the question is where the fact is stated. Some ideas:

You can get it from the database as per your #4. But how does it get into the database in the first place? If you nuke the db, how do you rebuild it? I imagine that somewhere there are SQL scripts for default data.

  • If not, maybe there should be? Maybe those scripts could be used to determine the constants in the code?
  • If not, maybe the code could be responsible for setting up the default data in the database? It wouldn't have to do this all the time, but the information for doing it at scheduled upgrades could live in the code

/J

  • Comment on Re: Synchronizing constants/enums in database and code

Replies are listed 'Best First'.
Re: Re: Synchronizing constants/enums in database and code
by seattlejohn (Deacon) on Apr 13, 2004 at 16:21 UTC
    Indeed, the DRY principle was the underlying motivator for my asking this question -- why do I have this in two places, and how am I going make sure they stay synchronized?

    I do have scripts that (re-)construct and (re-)populate the database. I'm really glad you brought that up, because considering them as part of the constellation of things that needs to stay in sync is leading me toward an approach I think I'm comfortable with.

    I'm now inclined to the constants in the code and generating the database table based on those same constants that the production code relies on. Of course I'll back that up with tests to make sure that I don't do something dumb like change the constants without reflecting those changes in the database.

    Thinking about it that way removes a lot of the unease I was feeling about this data being spread around instead of having one source of Ultimate Truth.

    Thanks for the replies, everyone!

            $perlmonks{seattlejohn} = 'John Clyman';

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://344261]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2024-03-29 15:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found