标签: coding-style

Python编码风格的空间

Python教程说"在操作符和逗号后使用空格,但不能直接在包围结构内:a = f(1,2)+ g(3,4)." "不直接在包围结构内"究竟意味着什么?

python formatting coding-style

1
推荐指数
3
解决办法
2110
查看次数

从XCode 4.2到4.3,新的ViewController类.m文件的定义不同.为什么?

像大多数人一样,我最近下载了最新版本的XCode(4.3.1).我注意到,当我创建新UIViewController对象时,关联.m文件包含我以前从未见过的其他类定义代码.

具体来说,如果我创建一个UIViewController名为'TestViewController' 的新命令,我会得到以下.m文件输出.

\\... removed comments...
#import "TestViewController.h"

@interface TestViewController ()

@end

@implementation TestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

\等等...

自XCode 4.3以来新添加的代码是#import声明下的部分:

@interface TestViewController ()

@end
Run Code Online (Sandbox Code Playgroud)

这段代码的目的是什么?可以/应该在括号内进行任何操作吗?是否有任何代码都在@interface@end语句中?

简而言之,将此代码添加到模板的重点是什么?作为一个有趣的旁注,当我尝试NSObject从模板创建时,没有添加上面提到的代码片段.它可能出现在其他类型的类模板中,但目前我只遇到过它UIViewControllerUITableViewController对象.

cocoa-touch coding-style ios xcode4.2 xcode4.3

1
推荐指数
1
解决办法
1781
查看次数

按两个变量对List进行排序

获得了"ClientContacts"列表---其中包含一个LastName(在人类的情况下)或一个EntityName(在通用联系的情况下,例如techsupport@mycompany.com).

我想要做的是按LastName按字母顺序排序此列表,如果不存在LastName(换句话说,存在EntityName),则将该EntityName视为LastName,并继续排​​序,就像它是LastName一样.

所以期望的结果如下:

  1. 邦德詹姆斯
  2. 客户支持
  3. 盖茨比尔
  4. 技术支持
  5. 威廉姆斯罗宾

这会导致崩溃,因为它遇到了一些没有LastName的ClientContacts.

clientContactList.Sort(
    delegate(ClientContact c1, ClientContact c2) 
        { return c1.LastName.CompareTo(c2.LastName); });
Run Code Online (Sandbox Code Playgroud)

以下允许我通过而不崩溃,它通过ClientContact EntityName的第一个和那些LastNames对它进行排序:

            list.Sort(delegate(ClientContact c1, ClientContact c2) {
            try
            {
                return c1.LastName.CompareTo(c2.LastName);
            }
            catch
            {
                try
                {
                    return c1.EntityName.CompareTo(c2.LastName);
                }
                catch
                {
                    return c1.EntityName.CompareTo(c2.EntityName);
                }

            }
        });
Run Code Online (Sandbox Code Playgroud)

导致:

  1. 客户支持
  2. 技术支持
  3. 邦德詹姆斯
  4. 盖茨比尔
  5. 威廉姆斯罗宾

如何将列表排序为上面所需的结果?

c# sorting coding-style list

1
推荐指数
1
解决办法
521
查看次数

动态类型设计:处理列表的递归性是一个好的设计吗?

缺乏维护动态类型代码的经验,我正在寻找处理这种情况的最佳方法:

(python中的示例,但可以使用任何动态类型的语言)

def some_function(object_that_could_be_a_list):
     if isinstance(object_that_could_be_a_list, list):
          for element in object_that_could_be_a_list:
              some_function(element)
     else:
          # Do stuff that expects the object to have certain properties 
          # a list would not have
Run Code Online (Sandbox Code Playgroud)

我对此感到非常不安,因为我认为一种方法应该只做一件事,而我认为它不像它应该的那样可读.所以,我很想做三个函数:第一个是"任何对象"和"排序"在另外两个之间,一个用于列表,另一个用于"简单"对象.然后,这会增加一些复杂性.

什么是最"可持续"的解决方案,以及保证易于维护的解决方案?对于那些我不知道的情况,python中有成语吗?提前致谢.

python coding-style list dynamic-typing

1
推荐指数
1
解决办法
129
查看次数

以优雅和礼貌的方式处理C++中的GTK回调

最近我开始了一个C++项目,以便熟悉GTK功能.我使用C++方法'因为我总是用java编程,所以在我看来很熟悉.

现在,GTK库是用C代码编写的,所以我在类和C代码之间实现了一些混合.我的一个问题是GTK事件与回调函数一起使用.为了将这些事件封装在类中,我使用了静态方法.

最重要的是静态方法和静态变量在类中是不可见的,而且我已经编写了一些其他静态函数,仅在类的.cpp文件中声明,从回调内部调用但与类完全分离.

在我看来这种方法有点笨拙,所以我想知道有没有最好的方法来处理类中的回调并允许它们以优雅的方式与类方法和结构进行交互?

谢谢!

c++ linux gtk coding-style callback

1
推荐指数
1
解决办法
1073
查看次数

头文件的C++样式

假设我有以下文件:

  1. main.cpp中
  2. routine.cpp
  3. routine.h

进一步假设main.cpp调用routine()在routine.cpp中定义的函数,但routine.cpp也包含routine()函数使用的函数.换句话说,routine.cpp包含仅从routine.cpp中调用的函数和从其他源文件调用的函数.

显然main.cpp将包含#include "routine.h".但是,routine.h是否包含在routine.cpp(样式A)中定义的所有函数的原型,或者routine.h是否包含从其他源文件(样式B)调用的函数的原型?

我总是在风格A之后编写代码,但最近我想知道风格B是否更具风格.(如果使用样式B,那么仅在routine.cpp中使用的函数的原型可以位于routine.cpp的顶部,或者定义可以简单地在它们的使用之前.)

c++ coding-style header header-files

1
推荐指数
1
解决办法
668
查看次数

__func函数的约定是什么?

我在Linux代码中看到了一堆名为__foo的函数.双下划线代表什么,何时应该使用?

c linux coding-style

1
推荐指数
1
解决办法
259
查看次数

元素之间的输出逗号

我的问题类似于这个问题,但我不想为此使用库.

想象一下,我们有一个我们想要输出的名称数组.

string names[] = { "Peter", "Max", "Jack", "Daniel", "Luke" };

for(int i = 0; i < sizeof(names); i++)
{
    cout << names[i];
}
Run Code Online (Sandbox Code Playgroud)

输出: PeterMaxJackDanielLuke

这不是我们所谓的用户友好,所以让我们在名称之间输出逗号.

for(int i = 0; i < sizeof(names); i++)
{
    cout << names[i] << ", ";
}
Run Code Online (Sandbox Code Playgroud)

输出: Peter, Max, Jack, Daniel, Luke,

问题是结尾逗号.随着if我可以检查每一个循环for,如果它是最后一个元素,但这并不似乎是一个干净的解决方案.

在不使用库的情况下在元素之间插入逗号的最佳方法是什么?

c++ performance coding-style

1
推荐指数
2
解决办法
4807
查看次数

为什么要避免点运算符链接

有两个代码段:

someObject.getBla1().getBla2().performBlah();
Run Code Online (Sandbox Code Playgroud)

第二个:

bla1=someObject.getBla1();
bla2=bla1.getBla2();
bla2.performBlah();
Run Code Online (Sandbox Code Playgroud)

我总是被告知要避开第一个,并使用第二个,因为我觉得第二个只是一个痛苦.

第二个有什么好处?

refactoring coding-style

1
推荐指数
1
解决办法
251
查看次数

用标签包围li标签是不好的做法吗?

例如:

<ul>
<a href="http://google.com"><li id="someId"></li></a>
...
...
...
</ul>
Run Code Online (Sandbox Code Playgroud)

这是我现有的CSS风格的快速破解.我想知道我是否应该重构它并将标签放在里面.

html css coding-style

1
推荐指数
2
解决办法
346
查看次数