linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: "Jonathan Hunter" <jonathanh@nvidia.com>,
	"Laxman Dewangan" <ldewangan@nvidia.com>,
	"Wolfram Sang" <wsa@the-dreams.de>,
	"Michał Mirosław" <mirq-linux@rere.qmqm.pl>,
	"Andy Shevchenko" <andy.shevchenko@gmail.com>,
	linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 30/34] i2c: tegra: Clean up variable names
Date: Mon, 21 Sep 2020 17:50:52 +0200	[thread overview]
Message-ID: <20200921155052.GA3991813@ulmo> (raw)
In-Reply-To: <633d8e6e-d50c-a7cb-5cdf-f0547b94a86d@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5417 bytes --]

On Mon, Sep 21, 2020 at 06:18:59PM +0300, Dmitry Osipenko wrote:
> 21.09.2020 14:40, Thierry Reding пишет:
> > On Thu, Sep 17, 2020 at 06:43:28PM +0300, Dmitry Osipenko wrote:
> >> 17.09.2020 15:21, Thierry Reding пишет:
> >>> On Wed, Sep 09, 2020 at 01:40:02AM +0300, Dmitry Osipenko wrote:
> >>>> Rename "ret" variables to "err" in order to make code a bit more
> >>>> expressive, emphasizing that the returned value is an error code.
> >>>> Same vice versa, where appropriate.
> >>>>
> >>>> Rename variable "reg" to "val" in order to better reflect the actual
> >>>> usage of the variable in the code and to make naming consistent with
> >>>> the rest of the code.
> >>>>
> >>>> Use briefer names for a few members of the tegra_i2c_dev structure in
> >>>> order to improve readability of the code.
> >>>>
> >>>> All dev/&pdev->dev are replaced with i2c_dev->dev in order to have uniform
> >>>> code style across the driver.
> >>>>
> >>>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> >>>> ---
> >>>>  drivers/i2c/busses/i2c-tegra.c | 173 ++++++++++++++++-----------------
> >>>>  1 file changed, 86 insertions(+), 87 deletions(-)
> >>>
> >>> That's indeed a nice improvement. One thing did spring out at me,
> >>> though.
> >>>
> >>>> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> >>> [...]
> >>>> @@ -1831,20 +1830,20 @@ static int __maybe_unused tegra_i2c_runtime_suspend(struct device *dev)
> >>>>  
> >>>>  	clk_bulk_disable(i2c_dev->nclocks, i2c_dev->clocks);
> >>>>  
> >>>> -	return pinctrl_pm_select_idle_state(i2c_dev->dev);
> >>>> +	return pinctrl_pm_select_idle_state(dev);
> >>>>  }
> >>>>  
> >>>>  static int __maybe_unused tegra_i2c_suspend(struct device *dev)
> >>>>  {
> >>>>  	struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
> >>>> -	int err = 0;
> >>>> +	int ret = 0;
> >>>>  
> >>>>  	i2c_mark_adapter_suspended(&i2c_dev->adapter);
> >>>>  
> >>>>  	if (!pm_runtime_status_suspended(dev))
> >>>> -		err = tegra_i2c_runtime_suspend(dev);
> >>>> +		ret = tegra_i2c_runtime_suspend(dev);
> >>>>  
> >>>> -	return err;
> >>>> +	return ret;
> >>>>  }
> >>>
> >>> Isn't this exactly the opposite of what the commit message says (and the
> >>> rest of the patch does)?
> >>
> >> This change makes it to be consistent with the rest of the code. You may
> >> notice that "Factor out hardware initialization into separate function"
> >> made a similar change.
> >>
> >> The reason I'm doing this is that the "err" suggests that code returns a
> >> error failure code, while it could be a success too and you don't know
> >> for sure by looking only at the part of code. Hence it's cleaner to use
> >> "err" when error code is returned.
> > 
> > I don't follow that reasoning. Every error code obviously also has a
> > value for success. Otherwise, what's the point of even having a function
> > if all it can do is fail. Success has to be an option for code to be any
> > useful at all, right?
> > 
> > The "err" variable here transports the error code and if that error code
> > happens to be 0 (meaning success), why does that no longer qualify as an
> > error code?
> 
> If you're naming variable as "err", then this implies to me that it will
> contain a error code if error variable is returned directly. Error
> shouldn't relate to a success. In practice nobody pays much attention to
> variable naming, so usually there is a need to check what code actually
> does anyways. I don't care much about this and just wanting to make a
> minor improvement while at it.

Oh... I think I get what you're trying to do here now. You're saying
that we may be storing a positive success result in this variable and
therefore it would be wrong to call it "error", right?

And I always thought I was pedantic... =)

The way I see it, any success value can still be considered an error
code. Typically you either propagate the value immediately for errors or
you just ignore it on success. In that case, keeping it in a variable a
bit beyond the assignment isn't a big issue. What matters is that you
don't use it. There are some exceptions where this can look weird, such
as:

	err = platform_get_irq(pdev, 0);
	if (err < 0)
		return err;

	chip->irq = err;

Although I think that's still okay and can be useful for example if
chip->irq is an unsigned int, and hence you can't do:

	chip->irq = platform_get_irq(pdev, 0);
	if (chip->irq < 0)
		return chip->irq;

My main gripe with variables named "ret" or "retval" is that I often see
them not used as return value at all. Or the other extreme is that every
variable is at some point a return value if it stores the result of a
function call. So I think "ret" is just fundamentally a bad choice. But
I also realize that that's very subjective.

Anyway, I would personally lean towards calling all these "err" instead
of "ret", but I think consistency trumps personal preference, so I would
not object to "ret" generally. But I think it's a bit extreme to use err
everywhere else and use "ret" only when we don't immediately return the
error code because I think that's just too subtle of a difference to
make up for the inconsistency.

On the other hand, we've spent way too much time discussing this, so
just pick whatever you want:

Acked-by: Thierry Reding <treding@nvidia.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2020-09-21 15:50 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-08 22:39 [PATCH v7 00/34] Improvements for Tegra I2C driver Dmitry Osipenko
2020-09-08 22:39 ` [PATCH v7 01/34] i2c: tegra: Make tegra_i2c_flush_fifos() usable in atomic transfer Dmitry Osipenko
2020-09-17 11:10   ` Thierry Reding
2020-09-17 14:57     ` Dmitry Osipenko
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 02/34] i2c: tegra: Add missing pm_runtime_put() Dmitry Osipenko
2020-09-17 11:12   ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 03/34] i2c: tegra: Handle potential error of tegra_i2c_flush_fifos() Dmitry Osipenko
2020-09-17 11:13   ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 04/34] i2c: tegra: Mask interrupt in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-17 11:18   ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 05/34] i2c: tegra: Initialize div-clk rate unconditionally Dmitry Osipenko
2020-09-17 11:20   ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 06/34] i2c: tegra: Remove i2c_dev.clk_divisor_non_hs_mode member Dmitry Osipenko
2020-09-17 11:25   ` Thierry Reding
2020-09-17 15:27     ` Dmitry Osipenko
2020-09-21 10:49       ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 07/34] i2c: tegra: Runtime PM always available on Tegra Dmitry Osipenko
2020-09-17 11:26   ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 08/34] i2c: tegra: Remove error message used for devm_request_irq() failure Dmitry Osipenko
2020-09-17 11:28   ` Thierry Reding
2020-09-17 14:59     ` Dmitry Osipenko
2020-09-21 10:57       ` Thierry Reding
2020-09-21 10:18   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 09/34] i2c: tegra: Use reset_control_reset() Dmitry Osipenko
2020-09-17 12:36   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 10/34] i2c: tegra: Use devm_platform_get_and_ioremap_resource() Dmitry Osipenko
2020-09-17 11:31   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 11/34] i2c: tegra: Use platform_get_irq() Dmitry Osipenko
2020-09-17 11:31   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 12/34] i2c: tegra: Use clk-bulk helpers Dmitry Osipenko
2020-09-17 11:38   ` Thierry Reding
2020-09-17 13:54     ` Andy Shevchenko
2020-09-21 11:01       ` Thierry Reding
2020-09-21 11:15         ` Andy Shevchenko
2020-09-21 11:53           ` Thierry Reding
2020-09-17 15:01     ` Dmitry Osipenko
2020-09-21 11:08       ` Thierry Reding
2020-09-21 11:12       ` Thierry Reding
2020-09-21 14:44         ` Dmitry Osipenko
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 13/34] i2c: tegra: Move out all device-tree parsing into tegra_i2c_parse_dt() Dmitry Osipenko
2020-09-17 11:35   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 14/34] i2c: tegra: Clean up probe function Dmitry Osipenko
2020-09-17 12:37   ` Thierry Reding
2020-09-17 13:46     ` Andy Shevchenko
2020-09-21 11:15       ` Thierry Reding
2020-09-17 15:02     ` Dmitry Osipenko
2020-09-21 11:17       ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 15/34] i2c: tegra: Reorder location of functions in the code Dmitry Osipenko
2020-09-17 12:38   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 16/34] i2c: tegra: Clean up variable types Dmitry Osipenko
2020-09-17 12:39   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 17/34] i2c: tegra: Remove outdated barrier() Dmitry Osipenko
2020-09-17 12:39   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 18/34] i2c: tegra: Remove likely/unlikely from the code Dmitry Osipenko
2020-09-17 12:41   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 19/34] i2c: tegra: Remove redundant check in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-17 12:42   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 20/34] i2c: tegra: Remove "dma" variable from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 11:44   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 21/34] i2c: tegra: Don't fall back to PIO mode if DMA configuration fails Dmitry Osipenko
2020-09-17 11:47   ` Thierry Reding
2020-09-17 15:03     ` Dmitry Osipenko
2020-09-21 11:21       ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 22/34] i2c: tegra: Rename wait/poll functions Dmitry Osipenko
2020-09-17 11:48   ` Thierry Reding
2020-09-21 10:19   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 23/34] i2c: tegra: Factor out error recovery from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 11:49   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 24/34] i2c: tegra: Factor out packet header setup " Dmitry Osipenko
2020-09-17 11:51   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 25/34] i2c: tegra: Factor out register polling into separate function Dmitry Osipenko
2020-09-17 11:58   ` Thierry Reding
2020-09-17 15:05     ` Dmitry Osipenko
2020-09-21 11:22       ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 26/34] i2c: tegra: Factor out hardware initialization " Dmitry Osipenko
2020-09-17 12:06   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 27/34] i2c: tegra: Check errors for both positive and negative values Dmitry Osipenko
2020-09-17 12:09   ` Thierry Reding
2020-09-17 13:50     ` Andy Shevchenko
2020-09-21 11:24       ` Thierry Reding
2020-09-21 14:13         ` Dmitry Osipenko
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 28/34] i2c: tegra: Consolidate error handling in tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 12:12   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 29/34] i2c: tegra: Improve formatting of variables Dmitry Osipenko
2020-09-17 12:16   ` Thierry Reding
2020-09-17 15:13     ` Dmitry Osipenko
2020-09-21 11:28       ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 30/34] i2c: tegra: Clean up variable names Dmitry Osipenko
2020-09-17 12:21   ` Thierry Reding
2020-09-17 15:43     ` Dmitry Osipenko
2020-09-21 11:40       ` Thierry Reding
2020-09-21 15:18         ` Dmitry Osipenko
2020-09-21 15:50           ` Thierry Reding [this message]
2020-09-21 16:05             ` Dmitry Osipenko
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 31/34] i2c: tegra: Clean up printk messages Dmitry Osipenko
2020-09-17 12:22   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 32/34] i2c: tegra: Clean up and improve comments Dmitry Osipenko
2020-09-17 12:32   ` Thierry Reding
2020-09-17 15:02     ` Dmitry Osipenko
2020-09-17 15:17       ` Dmitry Osipenko
2020-09-21 11:43         ` Thierry Reding
2020-09-21 11:44           ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 33/34] i2c: tegra: Clean up whitespaces, newlines and indentation Dmitry Osipenko
2020-09-17 12:35   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 34/34] i2c: tegra: Improve driver module description Dmitry Osipenko
2020-09-17 12:35   ` Thierry Reding
2020-09-21 10:20   ` Thierry Reding
2020-09-09  9:11 ` [PATCH v7 00/34] Improvements for Tegra I2C driver Andy Shevchenko
2020-09-09 15:36   ` Dmitry Osipenko
2020-09-09 15:49     ` Wolfram Sang
2020-09-09 17:39       ` Dmitry Osipenko
2020-09-17 12:44       ` Thierry Reding
2020-09-21  9:12         ` Wolfram Sang
2020-09-21 10:18 ` Thierry Reding
2020-09-21 10:42   ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200921155052.GA3991813@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=digetx@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=ldewangan@nvidia.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=wsa@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).