[Aptitude-devel] Review: 1ec363ac (001.1-package^)

Daniel Burrows dburrows at google.com
Tue Jul 20 17:29:14 UTC 2010


On Tue, Jul 20, 2010 at 9:36 AM, Piotr Galiszewski <piotr at galiszewski.pl> wrote:
> 2010/7/20 Daniel Burrows <dburrows at debian.org>:
>>> +      package::package(const pkgCache::PkgIterator &_pkg)
>>> +     : pkg(_pkg), is_virtual(false), short_desc_fallback(_("virtual"))
>>
>>  I wonder if it would be better to default-construct
>> short_desc_fallback (i.e., don't list it) and then assign it from
>> _("virtual") later, to avoid looking up _("virtual") for non-virtual
>> packages.  Or if you really want to avoid the default-construction,
>> use a ternary operator to avoid it.
>>
>
> I tried to make this variable const. I will fix it and initialize this
> variable later

  I don't think there's a big payoff for constness here, since the
whole class is based on using mutable members to cache.

>>  Is that logic correct?  I think you should only set is_virtual if
>> there are no versions at all (i.e., pkg.VersionList().end() is true).
>>
>
> True. I had a problem with this. How should things work for such
> packages. Searching and filtering for packages uses candidate version
> now (through package getters). I am not quite sure if it is good
> thing. Maybe I should add new method: get_version and use it instead
> of get_candidate_version. get_version will return candidate version if
> available, otherwise the newest version of package. All checks have to
> be fixed in this situation

  At the least, you shouldn't use is_virtual to mean something
different from the rest of the codebase; that will lead to confusion.

  Other frontends have the concept of the "visible version" of
a package; I'd suggest using that.  is_virtual will then be true iff
there is no visible version -- although I might just check whether
the visible version is NULL instead.

>>  Rendering logic in such a generic module raises a red flag for me.
>>
>>  I suggest just caching the parsed description, and letting consumers
>> of this class render it.  Or, alternatively, just always re-parsing
>> the description and returning a new parse each time.
>>
>
> I am little scared of performance in this case, as caching was the
> main purpose for writing this classes. Displaying this description is
> not a problem, because it is not frequently task. So rendering could
> be done in gui. Bigger problem is searching by description. In this
> case probably It will be better to give an access to unparsed
> description (maybe new getter?)

  I think that it's better to expose the raw description directly, yes.
Actually, if you use the matching library, you might not need that; it
will just handle the description internally.

  Daniel



More information about the Aptitude-devel mailing list