[ https://issues.apache.org/jira/browse/ZOOKEEPER-295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12795046#action_12795046 ]
Maxim P. Dementiev commented on ZOOKEEPER-295: ---------------------------------------------- Completely agree. Let's take zerror function name. It was used by many zip/unzip C implementations and linking the whole project (which uses both zk and zip) causes errors. > prevent multiple namespace pollution by C API > --------------------------------------------- > > Key: ZOOKEEPER-295 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-295 > Project: Zookeeper > Issue Type: Improvement > Components: c client > Affects Versions: 3.0.0, 3.0.1, 3.1.0 > Reporter: Chris Darroch > Fix For: 4.0.0 > > > The ZOOKEEPER-6 issue touched on the problem of namespace pollution by the > ZooKeeper C API; this report was closed but I don't think the problem has > actually been substantially resolved. > There are multiple namespaces to consider. First, the names of the C include > files should ideally have a common prefix, e.g., zoo_recordio.h, or else be > concatenated into a single zookeeper.h file. The zookeeper.jute.h include > file has a reasonably good name in this regard. > Second, all macros should ideally have a common prefix, e.g., ZOO_ or ZK_ or > ZOOKEEPER_. Currently many exported constants (not macros) have the ZOO_ > prefix, such as ZOO_PERM_READ, but error codes have a Z prefix, e.g., ZOK, > ZNOTEMPTY. > Third, all functions should ideally have a common prefix, e.g., zoo_ or zk_ > or zookeeper_. Many do already, but there is some variation, such as > zookeeper_init(), zookeeper_process(), and there are also a large number of > functions which have no prefix. These include many of the functions defined > in recordio.h and zookeeper.jute.h, such as get_buffer() and serialize_Id(). > Many others are simply used internally within the ZooKeeper C library and not > declared in an external include file, but still pollute the caller's > namespace, e.g., get_xid(), process_completions(), adaptor_init(), etc. All > external symbols in the libraries should have a common prefix. > Fourth, all structure and type definitions should also have a common prefix, > again, zoo_ or zk_ or zookeeper_. This is especially true of structures > which currently have very generic names such as Id, Stat, and ACL from > zookeeper.jute.h; buffer, iarchive, and oarchive from recordio.h; and > clientid_t and watcher_fn from zookeeper.h. The zhandle_t structure should > also be renamed to have the same prefix, e.g., zoo_handle_t. > The ZOOKEEPER-6 report includes the comment that the names in > zookeeper.jute.h will be difficult to change because they affect the Java > code and that there should be "limited exposure since jute naming starts with > caps". It would be nice to think so, but I fear that a structure named Id or > Stat is going to be pretty darn commonplace in other people's code. I would > strongly recommend revising the entire set file, function, macro, type and > structure names for 4.0.0. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.