Some small modernizing tweaks to the coding style guide
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 Mar 2014 23:30:51 +0000 (23:30 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 Mar 2014 23:30:51 +0000 (23:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=129427

Reviewed by Alexey Proskuryakov.

My intent here was originally to do the nullptr style guide update, but that was already done.
I did some other improvements. There's still quite a bit to do -- the guide is out of date in
a number of subtle ways.

* coding/coding-style.html: Change "left side operator" example to be a more modern example
without non-WebKit-style abbreviations and such. Use auto& instead of const auto& in for loop
example, since that's normally preferred. Changed section title to say "zero" instead of "0".
Use words instead of abbreviations in code examples. Show that a modern C++ for loop is preferred
over index iteration in vector iteration example and also showed use of unsigned rather than
size_t since that is almost always what we want. Eliminated the use of PassOwnPtr in the "return
a newly created object" example. Use references instead of pointers in one example.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@164930 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/webkit.org/ChangeLog
Websites/webkit.org/coding/coding-style.html

index 9649aa8..db19325 100644 (file)
@@ -1,3 +1,22 @@
+2014-02-27  Darin Adler  <darin@apple.com>
+
+        Some small modernizing tweaks to the coding style guide
+        https://bugs.webkit.org/show_bug.cgi?id=129427
+
+        Reviewed by Alexey Proskuryakov.
+
+        My intent here was originally to do the nullptr style guide update, but that was already done.
+        I did some other improvements. There's still quite a bit to do -- the guide is out of date in
+        a number of subtle ways.
+
+        * coding/coding-style.html: Change "left side operator" example to be a more modern example
+        without non-WebKit-style abbreviations and such. Use auto& instead of const auto& in for loop
+        example, since that's normally preferred. Changed section title to say "zero" instead of "0".
+        Use words instead of abbreviations in code examples. Show that a modern C++ for loop is preferred
+        over index iteration in vector iteration example and also showed use of unsigned rather than
+        size_t since that is almost always what we want. Eliminated the use of PassOwnPtr in the "return
+        a newly created object" example. Use references instead of pointers in one example.
+
 2014-02-26  Julien Brianceau  <jbriance@cisco.com>
 
         Add Cisco to team.html
index d29f1e3..1694b2b 100644 (file)
@@ -139,18 +139,16 @@ have their operators on the left side of the line instead of the right side.
 
 <h4 class="right">Right:</h4>
 <pre class="code">
-if (attr->name() == srcAttr
-    || attr->name() == lowsrcAttr
-    || (attr->name() == usemapAttr && attr->value().domString()[0] != '#'))
-    return;
+return attribute.name() == srcAttr
+    || attribute.name() == lowsrcAttr
+    || (attribute.name() == usemapAttr &amp;&amp; attribute.value().string()[0] != '#');
 </pre>
 
 <h4 class="wrong">Wrong:</h4>
 <pre class="code">
-if (attr->name() == srcAttr ||
-    attr->name() == lowsrcAttr ||
-    (attr->name() == usemapAttr && attr->value().domString()[0] != '#'))
-    return;
+return attribute.name() == srcAttr ||
+    attribute.name() == lowsrcAttr ||
+    (attribute.name() == usemapAttr &amp;&amp; attr->value().string()[0] != '#');
 </pre>
 </li>
 
@@ -192,14 +190,14 @@ return condition ? 1:0;
 <h4 class="right">Right:</h4>
 <pre class="code">
 Vector&lt;PluginModuleInfo> plugins;
-for (const auto&amp; plugin : plugins)
+for (auto&amp; plugin : plugins)
     registerPlugin(plugin);
 </pre>
 
 <h4 class="wrong">Wrong:</h4>
 <pre class="code">
 Vector&lt;PluginModuleInfo> plugins;
-for (const auto&amp; plugin: plugins)
+for (auto&amp; plugin: plugins)
     registerPlugin(plugin);
 </pre>
 </li>
@@ -421,7 +419,7 @@ for ( ; current; current = current->next);
 </li>
 </ol>
 
-<h3 id="zero">Null, false and 0</h3>
+<h3 id="zero">Null, false and zero</h3>
 <ol>
 <li id="zero-null">In C++, the null pointer value should be written as <code>nullptr</code>. In C, it should be written as <code>NULL</code>. In Objective-C and Objective-C++, follow the guideline for C or C++, respectively, but use <code>nil</code> to represent a null Objective-C object.</li>
 
@@ -716,10 +714,10 @@ line, with the colon or comma preceding the member on that line.
 
 <h4 class="right">Right:</h4>
 <pre class="code">
-MyClass::MyClass(Document* doc)
+MyClass::MyClass(Document* document)
     : MySuperClass()
     , m_myMember(0)
-    , m_doc(doc)
+    , m_document(document)
 {
 }
 
@@ -731,21 +729,27 @@ MyOtherClass::MyOtherClass()
 
 <h4 class="wrong">Wrong:</h4>
 <pre class="code">
-MyClass::MyClass(Document* doc) : MySuperClass()
+MyClass::MyClass(Document* document) : MySuperClass()
 {
     m_myMember = 0;
-    m_doc = doc;
+    m_document = document;
 }
 
 MyOtherClass::MyOtherClass() : MySuperClass() {}
 </pre>
 
-<li id="punctuation-vector-index">Prefer index over iterator in Vector iterations for terse, easier-to-read code.
+<li id="punctuation-vector-index">Prefer index over iterator in Vector iterations for terse, easier-to-read code.
 
 <h4 class="right">Right:</h4>
 <pre class="code">
-size_t frameViewsCount = frameViews.size();
-for (size_t i = 0; i &lt; frameViewsCount; ++i)
+for (auto&amp; frameView : frameViews)
+    frameView->updateLayoutAndStyleIfNeededRecursive();
+</pre>
+
+<h4 class="right">OK:</h4>
+<pre class="code">
+unsigned frameViewsCount = frameViews.size();
+for (unsigned i = 0; i &lt; frameViewsCount; ++i)
     frameViews[i]->updateLayoutAndStyleIfNeededRecursive();
 </pre>
 
@@ -855,7 +859,6 @@ Don't bother to organize them in a logical order.
 #include "Attribute.h"
 #include "HTMLElement.h"
 #include "QualifiedName.h"
-
 </pre>
 
 <h4 class="wrong">Wrong:</h4>
@@ -1099,7 +1102,7 @@ public:
 class Vector {
 public:
     explicit Vector(int size); // Not a type conversion.
-    PassOwnPtr&lt;Vector&gt; create(Array); // Costly conversion.
+    Vector create(Array); // Costly conversion.
 ...
 
 </pre>
@@ -1108,9 +1111,9 @@ public:
 <pre class="code">
 class Task {
 public:
-    Task(ScriptExecutionContext*); // Not a type conversion.
+    Task(ScriptExecutionContext&amp;); // Not a type conversion.
     explicit Task(); // No arguments.
-    explicit Task(ScriptExecutionContext*, Other); // More than one argument.
+    explicit Task(ScriptExecutionContext&amp;, Other); // More than one argument.
 ...
 </pre>
 </li>