Hello,
I think we went overboard in this commit:
https://github.com/django/django/commit/165f44aa
Specifically, I consider it's a regression in three areas.
1) Readability
After the patch, indentation no longer matches the logical structure of the
program. For example:
- with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'intcomma')
+ with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False), \
+ translation.override('en'):
+ self.humanize_tester(test_list, result_list, 'intcomma')
The new version is longer than the old one (by two characters) and visually
harder to parse.
2) Readability (bis)
After the patch, distinct operations end up on the same line, obfuscating the
intent of the code. For example :
- with six.assertRaisesRegex(self, Exception, "Oops"):
- with transaction.atomic():
- Reporter.objects.create(first_name="Haddock")
- raise Exception("Oops, that's his last name")
+ with six.assertRaisesRegex(self, Exception, "Oops"),
transaction.atomic():
+ Reporter.objects.create(first_name="Haddock")
+ raise Exception("Oops, that's his last name")
In the old version, the first line is a test assertion and the second line is
the code exercised by the test. I find it confusing to put both on the same
line.
3) Consistency
Django always uses implicit line continuations instead of backslashes. This
commits introduces several explicit line continuations with backslashes that
can't be turned into implicit ones.
To be fair, sometimes the new version is more readable :
- with translation.override('ja'):
- with self.settings(USE_L10N=True):
- self.humanize_tester([100], ['100'], 'intcomma')
+ with translation.override('ja'), self.settings(USE_L10N=True):
+ self.humanize_tester([100], ['100'], 'intcomma')
But whenever the with statement spills over two lines, which happens in a
majority of cases, I find it worse than two with statements. It's especially
bad in the transactions tests — I worked in this area today.
--
Aymeric.
--
You received this message because you are subscribed to the Google Groups
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-developers.
For more options, visit https://groups.google.com/groups/opt_out.