胶合的首字母缩略词和golang命名惯例

时间:2016-10-03 11:07:56

标签: go naming-conventions acronym

有没有办法在不破坏golang命名约定的情况下使下面的常量更具可读性?

$(document).ready(function() {

  $("#leavefromdate, #leavetodate").datepicker({
    changeMonth: true,
    changeYear: true,
    firstDay: 1,
    dateFormat: 'dd/mm/yy',
  })

  $("#leavefromdate").datepicker({
    dateFormat: 'dd-mm-yy'
  });
  $("#leavetodate").datepicker({
    dateFormat: 'dd-mm-yy'
  });

  $('#leavetodate').change(function() {
    var start = $('#leavefromdate').datepicker('getDate');
    var end = $('#leavetodate').datepicker('getDate');

    if (start <= end) {
      var leavecount = (end - start) / 1000 / 60 / 60 / 24 + 1;
      var leavefactor = 1;
      if ($("select#filter").val() == 'ShortLeave') {
        leavefactor = 0.25;
      } else if ($("select#filter").val() == 'HalfDay') {
        leavefactor = 0.5;
      }
      $('#leavecount').val(leavecount * leavefactor);
    } else {

      alert("You cant come back before you have been!");
      $('#leavefromdate').val("");
      $('#leavetodate').val("");
      $('#leavecount').val("");
    }
  }); //end change function
}); //end ready

2 个答案:

答案 0 :(得分:3)

Go的命名约定更喜欢MixedCaps而不是下划线,所以不要使用它们。资料来源:Effective Go: MixedCaps

通常,当您拥有实体的不同值的常量时,更容易阅读的方法是使用实​​体启动常量名称,然后是具体值的名称。很好的例子是net/http包:

const (
    MethodGet  = "GET"
    MethodHead = "HEAD"
    MethodPost = "POST"
    // ...
)

const (
    StatusContinue           = 100 // RFC 7231, 6.2.1
    StatusSwitchingProtocols = 101 // RFC 7231, 6.2.2
    StatusProcessing         = 102 // RFC 2518, 10.1

    StatusOK                 = 200 // RFC 7231, 6.3.1
    StatusCreated            = 201 // RFC 7231, 6.3.2
    // ...
)

此外,您不需要使用iota标识符重复表达式。 Spec: Constant declarations:

  

在带括号的const声明列表中,可以从除第一个声明之外的任何声明中省略表达式列表。这样的空列表等同于第一个前面的非空表达式列表的文本替换及其类型(如果有的话)。因此,省略表达式列表等同于重复上一个列表。

所以在你的情况下,它可能看起来像这样,非常清晰和可读:

// stream types
const (
    StreamMPEGDASH = iota
    StreamHLS
    StreamMPEGTSUDP
    StreamMPEGTSRTP
)

有关详细信息,另请参阅Go Code Review Comments。缩略语可在Initialisms部分找到:

  

名称中的单词是首字母或首字母缩略词(例如&#34; URL&#34;或&#34; NATO&#34;)具有一致的大小写。例如,&#34; URL&#34;应显示为&#34; URL&#34;或者&#34; url&#34; (如&#34; urlPony&#34;或&#34; URLPony&#34;),从不作为&#34; Url&#34;。以下是一个例子:ServeHTTP不是ServeHttp。

     

此规则也适用于&#34; ID&#34;当它是&#34;标识符的简称时,&#34;所以写&#34; appID&#34;而不是&#34; appId&#34;。

答案 1 :(得分:1)

您要做的是规范的Golang方法。

根据Code Review Comments,您应该在ALLCAPS中输入缩写词:

名称中的缩写词或首字母缩写词(例如“ URL”或“ NATO”)具有一致的大小写。例如,“ URL”应显示为“ URL”或“ url”(如在“ urlPony”或“ URLPony”中一样),而从不显示为“ Url”。例如:ServeHTTP而不是ServeHttp。对于具有多个已初始化“单词”的标识符,请使用“ xmlHTTPRequest”或“ XMLHTTPRequest”。

我喜欢吗?没那么多。

您可以稍微移动单词以使其更具可读性,例如MPEGStreamDASH

如果您真的讨厌它-那么您需要意识到它就是您的代码,并且您可以做任何喜欢的事情-无论是MpegDashStreamMPEG_DASH_Stream甚至是MpEg_DaSh_StreaM-那样邪恶;-)