DZone
Web Dev Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Web Dev Zone > Can Arrays Be Used as Domain Objects?

Can Arrays Be Used as Domain Objects?

Jose Asuncion user avatar by
Jose Asuncion
·
Mar. 15, 12 · Web Dev Zone · Interview
Like (0)
Save
Tweet
3.85K Views

Join the DZone community and get the full member experience.

Join For Free

Ever since I switched from Java and started programming in PHP and Python, both dynamic languages, I have had a debate with myself  on whether or not to use arrays as business domain objects. I noticed the codebase I was working in passed arrays a lot in $params variables.  In this post, I share, literally , the debates I had with myself regarding this issue in an easily digestible debate themed blog post!

Can Arrays be Used as Domain Objects?

I use arrays because, at the moment, I am currently using PHP in my work. But this can easily be translated to dictionaries in Python or  wait what Maps in Java? From the pov of someone who used to program enterprise Java, it already sounds like bad design. Is it?

Arrays for Rapid Development

Using arrays can speed your development times.  You don’t have to be in analysis paralysis thinking about too many things when designing your classes.

Counter-Retort: At least think about the future. It is not forward compatible.What if one day that domain object suddenly should exhibit some behaviour? It’s hard to change your codebase to accommodate that change. In PHP, one would have to use the -> notation to invoke getters or a magic method from the index notation that arrays use to access data. In Python it’s also the same. In Java…don’t get me started.

  • Retort: There are work arounds to this, in Python, you can use a hybrid dict/object. In PHP, ArrayObject. In Java, I don’t know.

    • Counter-Retort: Those features are cool but doing things that way leaves no room for validation of data as in the case of setters, and what if the getter had to do some processing before returning a value?

Arrays 0 Objects 1

Objects can be Ugly Sometimes

Imagine querying an object using an ORM when you need only some fields of that object, say a facebook account that contains so many attributes but where I only need the access token.

Counter-Retort: There is no harm in querying the whole object.

  • Retort: Peformance?

    • Counter-Retort: Do I smell premature optimization? Of course, there will be times when one only needs to iterate and display the data in an object and no behaviour will be invoked. During those times, the use of arrays is completely fine, provided your data access layer or orm can return array representations or object ones quite easily . If a behaviour is required by the service layer, then the object representation should be returned back to it by the dao. Run your tests after. Either way, it is still best to query the whole object for forward compatibility. You might need the other values one day.

This round is a draw.

Objects don’t do the job sometimes.

What if you wanted to display a table or information that is a relationship? For example, a purchase transaction for a book. In an RDBMS, this is usually a relationships table with foreign keys. In the book transaction example, there will be a separate table for book and customer and another one for transaction which brings both of them together. Do I have to make a separate object for that? Can’t I just shove these values to an array?

  • Counter-Retort: I guess if you just wanted to display information, then arrays are okay, again, provided that your data access layer/orm makes it easy to query for object or array but there will be cases when, for example, that object needs to exhibit a behaviour, then it has to be callable.

This round is also a draw.

Summing Up

  1. Arrays are okay as long as it will be only used for displaying. It is much easier to iterate over arrays than objects.
  2. When an object has to exhibit behaviour, query for object.

 

Object (computer science)

Published at DZone with permission of Jose Asuncion, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • MACH Architecture Explained
  • Revoking Access to JWTs With a Blacklist/Deny List
  • How to Build Security for Your SaaS User Communications
  • How Low Code Demands More Creativity From Developers

Comments

Web Dev Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo