# Many or few constructor signatures?

**URL:** <https://discourse.julialang.org/t/many-or-few-constructor-signatures/12301>\
**Category:** Internals & Design\
**Created:** [July 10, 2018, 7:03pm UTC](https://discourse.julialang.org/t/many-or-few-constructor-signatures/12301 "2018-07-10T19:03:20Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [July 11, 2018, 7:10am UTC](https://discourse.julialang.org/t/many-or-few-constructor-signatures/12301/4 "2018-07-11T07:10:27Z")

</div>

This may not be new (since you participated in the topic), but

> [@Recommended style for conversion vs. constructors in v0.7](https://discourse.julialang.org/t/recommended-style-for-conversion-vs-constructors-in-v0-7/11561):
>
> I’ve been upgrading a few packages to v0.7, and one of the biggest sources of deprecations is the removal of the default constructor-\>convert fallback. For those unfamiliar, previously if you had: struct T ... end Base.convert(::Type{T}, x::Int) = (construct a new T from an Int) then you you could call T(1) and, if there was not constructor matching (::Int), then convert(T, 1) would automatically be called for you. That was convenient but also kind of muddied the distinction between convers…

has a lot of good advice for constructors.

I would not worry about too many _outer_ constructor methods _per se_, eg `DataFrames.DataFrame` has 16 outer methods (and 1 inner constructor).

However, if you need more than a few (ideally 1) _inner_ constructors (eg for validation), you may be doing something wrong.

---

_[View the full topic](https://discourse.julialang.org/t/many-or-few-constructor-signatures/12301)._
