2013-12-03 7 views
5

昔、私はいくつかのコード(PERL ... urp)を一見していました。私のマネージャーの一人が書いていて、彼のコードで使っていたバナー/見出しのシステムに驚いていました。彼のコードを詳細に調べる機会はありませんでしたが、画面上のバナーのコメントだけで、遠くからでもコードの意味を簡単に伝えることができました。コメントバナー/ヘッダーのベストプラクティス/例?

残念なことに、これはずっと前のことでした。当時の私の会話は、「はい、私たちのドットコムスタートアップがトイレを下っていることを忘れてしまいました。

年後、私はまだその日に見た(おそらく今の神話の)コードとしての明快さを持つ高水準のコメントスタイルを達成していません。

「バナー」と言いますと、多くのコーダーがコードでより高いレベルのデビジョンを作成するために使用するハイレベルのブロック分割/ヘッダーを指しています。彼らは通常、私の現在の毎日の使用言語では、単純なASCIIダッシュの、スラッシュ、等号などで構成している、一つのコードバナー/ヘッダーの階層は次のようになります。

# ======================================================== 
# = Header 1 
# ======================================================== 

# -------------------------------------------------------- 
# - Header 2 
#--------------------------------------------------------- 

# == Header 3 ============================================ 

# -- Header 4 -------------------------------------------- 

# Header 5 

とすべての通常のバリエーション。

私の検索は注目に値するものは何もありませんでしたが、確かにどこかでウェブ上で誰かがこれらの例を収集し、系統的に提示しようとしましたか?

誰かが有用であると判明したバナーコメントスタイル "システム"を指摘できますか?私は「ああ、私はアスタリスクを使っているのが好きです」とは考えていませんが、高レベルのコード作成をすばやく簡単にするだけでなく、例から好ましいシステムを選ぶことは、明らかに説明を比較するよりも簡単です。

注:の内容は、のコメントそのものには興味がありませんが、全体的なコードの内容と構成の明確な兆候を示すコメントには "flair"が使用されています。

答えて

1

コメントのスタイルを検証する最も良い方法の1つは、doxygenなどのコードドキュメントツールを使用することです。他のリストhereがあり、出力がどのようなものだったかを確認します。より良いコメント。

一番大きなポイントは、一貫性とランキングの明確な表示、完全性と簡潔さです。つまり、あなたが一度見たら、他のものがどのように見えるか、あなたがどれだけ重要であるかを知る必要があります見ている。 これは、重要なものがどれほど重要かわからないので、良いデザインを持つようにします。一目でで取るのに十分短くする必要があり

次はあなたが必要とするすべての情報は、存在しなければならないが、 - しかし、そのようにオブジェクト/あなたがコーディングスタイルを変更する両方これらの力を満たしますコードがあまりにも大きくない、名前があまりにも多く、パラメータがあまりにも多くないなど、lintのようなツールが教えてくれるものすべて

Pythonコードの場合、PEP-257のスタイルサマリーには、多くの便利なガイドラインといくつかの例があります。私は、これはアンドレアのことの最初のモジュールだったと言わなければならない - 私のマシン上でいくつかの「グッド」のコードのための

簡単に見、私は以下のコードのセクションが含まれているが、あなたは完全なコードhereを見ることができAndrea Gavana's Aquabutton.pyを上げ私はアルファベットの早い段階で開かれましたが、私は誰でもやっただろうと確信しています。

# --------------------------------------------------------------------------------- # 
# AQUABUTTON wxPython IMPLEMENTATION 
# 
# Andrea Gavana, @ 07 October 2008 
# Latest Revision: 24 Nov 2011, 22.00 GMT 
# 
# 
# TODO List 
# 
# 1) Anything to do? 
# 
# 
# For all kind of problems, requests of enhancements and bug reports, please 
# write to me at: 
# 
# [email protected] 
# [email protected] 
# 
# Or, obviously, to the wxPython mailing list!!! 
# 
# 
# End Of Comments 
# --------------------------------------------------------------------------------- # 

""" 
:class:`AquaButton` is another custom-drawn button class which *approximatively* mimics 
the behaviour of Aqua buttons on the Mac. 


Description 
=========== 

:class:`AquaButton` is another custom-drawn button class which *approximatively* mimics 
the behaviour of Aqua buttons on the Mac. At the moment this class supports: 

* Bubble and shadow effects; 
* Customizable background, foreground and hover colours; 
* Rounded-corners buttons; 
* Text-only or image+text buttons; 
* Pulse effect on gaining focus. 

And a lot more. Check the demo for an almost complete review of the functionalities. 


Usage 
===== 

Sample usage:: 

    import wx 
    import wx.lib.agw.aquabutton as AB 

    app = wx.App(0) 

    frame = wx.Frame(None, -1, "AquaButton Test") 

    mainPanel = wx.Panel(frame) 
    mainPanel.SetBackgroundColour(wx.WHITE) 

    # Initialize AquaButton 1 (with image) 
    bitmap = wx.Bitmap("my_button_bitmap.png", wx.BITMAP_TYPE_PNG) 
    btn1 = AB.AquaButton(mainPanel, -1, bitmap, "AquaButton") 

    # Initialize AquaButton 2 (no image) 
    btn2 = AB.AquaButton(mainPanel, -1, None, "Hello World!") 

    frame.Show() 

    app.MainLoop() 


Supported Platforms 
=================== 

AquaButton has been tested on the following platforms: 
    * Windows (Windows XP); 
    * Linux Ubuntu (10.10). 


Window Styles 
============= 

`No particular window styles are available for this class.` 


Events Processing 
================= 

This class processes the following events: 

================= ================================================== 
Event Name  Description 
================= ================================================== 
``wx.EVT_BUTTON`` Process a `wxEVT_COMMAND_BUTTON_CLICKED` event, when the button is clicked. 
================= ================================================== 


License And Version 
=================== 

:class:`AquaButton` control is distributed under the wxPython license. 

Latest Revision: Andrea Gavana @ 22 Nov 2011, 22.00 GMT 

Version 0.4 

""" 

import wx 

# Constants for the hovering and clicking effects 
HOVER = 1 
""" Indicates that the mouse is hovering over :class:`AquaButton` """ 
CLICK = 2 
""" Indicates that :class:`AquaButton` has been clicked """ 


class AquaButtonEvent(wx.PyCommandEvent): 
    """ Event sent from the :class:`AquaButton` buttons when the button is activated. """ 

    def __init__(self, eventType, eventId): 
     """ 
     Default class constructor. 

     :param integer `eventType`: the event type; 
     :param integer `eventId`: the event identifier. 
     """ 

     wx.PyCommandEvent.__init__(self, eventType, eventId) 
     self.isDown = False 
     self.theButton = None 


    def SetButtonObj(self, btn): 
     """ 
     Sets the event object for the event. 

     :param `btn`: the button object, an instance of :class:`AquaButton`. 
     """ 

     self.theButton = btn 

スニップ

class AquaButton(wx.PyControl): 
    """ This is the main class implementation of :class:`AquaButton`. """ 

    def __init__(self, parent, id=wx.ID_ANY, bitmap=None, label="", pos=wx.DefaultPosition, 
       size=wx.DefaultSize, style=wx.NO_BORDER, validator=wx.DefaultValidator, 
       name="aquabutton"): 
     """ 
     Default class constructor. 

     :param Window `parent`: parent window. Must not be ``None``; 
     :param integer `id`: window identifier. A value of -1 indicates a default value; 
     :param Bitmap `bitmap`: the button bitmap (if any); 
     :param string `label`: the button text label; 
     :param `pos`: the control position. A value of (-1, -1) indicates a default position, 
     chosen by either the windowing system or wxPython, depending on platform; 
     :type `pos`: tuple or :class:`Point` 
     :param `size`: the control size. A value of (-1, -1) indicates a default size, 
     chosen by either the windowing system or wxPython, depending on platform; 
     :type `size`: tuple or :class:`Size` 
     :param integer `style`: the button style (unused); 
     :param Validator `validator`: the validator associated to the button; 
     :param string `name`: the button name. 
     """ 

     wx.PyControl.__init__(self, parent, id, pos, size, style, validator, name) 

     self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) 

     self.Bind(wx.EVT_PAINT, self.OnPaint) 
     self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None) 
     self.Bind(wx.EVT_SIZE, self.OnSize) 
     self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) 
     self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) 
     self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) 
     self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter) 
     self.Bind(wx.EVT_SET_FOCUS, self.OnGainFocus) 
     self.Bind(wx.EVT_KILL_FOCUS, self.OnLoseFocus) 
     self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) 
     self.Bind(wx.EVT_KEY_UP, self.OnKeyUp) 
     self.Bind(wx.EVT_TIMER, self.OnPulseTimer) 

     if "__WXMSW__" in wx.PlatformInfo: 
      self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown) 

     self._mouseAction = None 
     self.SetBitmapLabel(bitmap) 
     self._hasFocus = False 
     self._saveBitmap = True 
     self._storedBitmap = wx.NullBitmap 
     self._pulseOnFocus = False 
     self._gammaFactor = 1.0 
     self._gammaIncrement = 0.1 

     self._timer = wx.Timer(self, wx.ID_ANY) 

     self.SetLabel(label) 
     self.InheritAttributes() 
     self.SetInitialSize(size) 

     # The following defaults are better suited to draw the text outline 
     if "__WXMAC__" in wx.PlatformInfo: 
      self._backColour = wx.Colour(147, 202, 255) 
      self._hoverColour = self.LightColour(self._backColour, 30) 
      self._disableColour = self.LightColour(self._backColour, 70) 
      self._textColour = wx.BLACK 
     else: 
      self._backColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION) 
      self._hoverColour = self.LightColour(self._backColour, 30) 
      self._disableColour = self.LightColour(self._backColour, 70) 
      self._textColour = wx.WHITE 


    def SetBitmapLabel(self, bitmap): 
     """ 
     Sets the bitmap label for the button. 

     :param `bitmap`: the bitmap label to set, an instance of :class:`Bitmap`. 
     """ 

     self._bitmap = bitmap 
     self.Refresh() 
+0

は、合意されました。これを例示するコード(オプションでPython)を教えてください。私が今までに見つけて作成した例は不満足です。 –

+0

上記の例が追加されました。 –

関連する問題