如果您应该将所有内容封装在类定义中,那么如何在类中使用枚举数据类型呢?例如,我刚刚编写了以下代码......
enum PizzaType {DEEP_DISH, HAND_TOSSED, PAN};
enum PizzaSize {SMALL, MEDIUM, LARGE};
class Pizza {
public:
Pizza();
void setPizzaType(PizzaType type);
PizzaType getPizzaType();
void setPizzaSize(PizzaSize size);
PizzaSize getPizzaSize();
void setToppings(int toppings);
int getToppings();
void outputDescription();
double computePrice();
private:
PizzaType pizzaType;
PizzaSize pizzaSize;
int totalToppings;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在类本身中包含枚举数据类型,但仍允许从外部访问mutator/accessor函数?
鉴于以下设置和代码片段,您可以提出使用其中一个的原因是什么?我使用其中任何一个都有几个论点,但我很好奇其他人的想法.
建立
public class Foo
{
public void Bar()
{
}
}
Run Code Online (Sandbox Code Playgroud)
Snippet One
var foo = new Foo();
foo.Bar();
Run Code Online (Sandbox Code Playgroud)
小片二
new Foo().Bar();
Run Code Online (Sandbox Code Playgroud) 与人讨论,在面试中询问或在面试中被问到,我不知道我是否确切知道何时将内联函数编写为宏或将其写为宏.除了编译时和运行时考虑之外,从编码标准的角度来看是否有任何建议.
我认为这是程序员偏好的问题之一,或者可能会说偏向于使用.如果成员可以引用轶事,经验或情况,他们选择了一个而不是另一个,我可能是一个好主意.
这可能有点主观,但我经常发现,看看其他开发者如何处理某些日常细节会非常有趣.
我有这样的代码:
class A {
public List<SomeType> getOneSet() { ... }
public List<SomeType> getAnotherSet() { ... }
}
class B {
public static OtherType convert(SomeType input) { ... }
}
// ...
A a = new A();
List<OtherType> rgResults = new ArrayList<OtherType>();
Run Code Online (Sandbox Code Playgroud)
现在将遵循相当于两个相同的for循环,如下所示:
for (SomeType input : a.getOneSet()) {
rgResults.add(B.convert(input);
}
for (SomeType input : a.getAnotherSet()) {
rgResults.add(B.convert(input);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但它当然是代码重复.如果循环中的代码变得稍微复杂或者有两个以上的集合,那么这是不可接受的.
因此,我将循环放在一个以源和目标列表作为参数的函数中,但很想知道是否还有其他方法.特别是那些在你从不在多个地方调用函数时可能更合适的东西.
例如,我会喜欢以下,但由于我不能使用泛型数组,因此无效:
for (List<SomeType> rgSrc : new List<SomeType>[] { a.getOneSet(), a.getAnotherSet() } ) {
for (SomeType src : …Run Code Online (Sandbox Code Playgroud) FxCop认为我(基本上是从内存中)应该在MajorCamelCase中编写函数,类和属性,而私有变量应该在minorCamelCase中.
我在讨论IRC上一个相当受欢迎的项目,并引用了一些代码.另一个人,一个相当臭名昭着的巨魔,也是一个半操作(喘气!)似乎不同意.所有东西都应该在同一个外壳中,他非常热衷于MajorCamelCase,甚至是下划线.
当然,他只是一个巨魔,所以我估计我会像往常一样继续这样做.之前我学会了上述原则,我几乎连有一个连贯的命名风格.
他让我想到了 - 这样的事情真的很重要吗?
我在Python中编写了很多代码,并经常创建类.现在,我不确定这是不是很好的Python表单,但我只是在与main()相同的文件中声明一个类.
class foo {
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道在Java中它是否是一个很好的形式来做同样的事情?
例如,
class foo {
public static int name;
public static int numPoints;
public static int[] points;
}
public class bar {
public static void main(String[] args) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
不会在Eclipse中抛出错误,因此必须允许它.但是可以吗?将该类声明为单独的文件会更好吗?
编辑:我只是想强调,我的新类字面上只是一个容器,可以多次保存相同类型的数据,而字面上只有3个值.所以总共大约5行代码.问题是 - 这是否值得一个新文件?
我很想知道,你在PHP代码中有多少缩进空间?
function one()
{
$one;
function space()
{
$space;
}
}
function two()
{
$two;
function spaces()
{
$spaces;
}
}
function three()
{
$three;
function spaces()
{
$spaces;
}
}
function four()
{
$four;
function spaces()
{
$spaces;
}
}
Run Code Online (Sandbox Code Playgroud)
我们不会为同一缩进创建多个答案,但请将+1用于符合您偏好的答案.
我听过很多关于编程风格的重要性.在我看来,缩进很容易处理.但其他事情让我很沮丧.考虑一个特定的例子来演示inet_makeaddr的使用.
/* demonstrate the use of host address functions */
#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>
int
main(void)
{
/* inet_makeaddr demo */
uint32_t neta = 0x0a3e5500;
uint32_t hosta = 0x0c;
struct in_addr alla = inet_makeaddr(neta, hosta);
printf("makeaddr of net: %08x and host: %08x = %08x\n",
neta, hosta, alla);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可能想写如下:
uint32_t neta;
uint32_t hosta;
struct in_addr alla;
neta = 0x0a3e5500;
hosta = 0x0c;
alla = inet_makeaddr(neta, hosta);
Run Code Online (Sandbox Code Playgroud)
然后其他人可能总是在定义时初始化变量:
uint32_t neta = 0;
uint32_t hosta = 0;
struct …Run Code Online (Sandbox Code Playgroud) 我开始使用睡衣了,我遇到了一些烦恼.我必须导入很多东西才能使脚本运行良好.例如,要制作一个我需要的按钮
from pyjamas.ui.Button import Button
Run Code Online (Sandbox Code Playgroud)
然后我可以使用Button.注意
import pyjamas.ui.Button
Run Code Online (Sandbox Code Playgroud)
然后使用Button.Button不起作用(在构建JavaScript时导致错误,至少在0.7pre1中).有没有人比穿着睡衣的人在他们的网站上有更好的方法来做一个穿着睡衣的导入语句?从我的角度来看,他们的方式是可行的,但是很丑陋且过于复杂,特别是当你想要使用十几个或更多ui组件时.
if (false == x) { ...}
Run Code Online (Sandbox Code Playgroud)
而不是:
if (!x) { ... }
Run Code Online (Sandbox Code Playgroud)
和
if (false == f1()) { ...}
Run Code Online (Sandbox Code Playgroud)
而不是:
if (!f1()) { ... }
Run Code Online (Sandbox Code Playgroud)
我认为if(假= = ......版本更具可读性.你同意,或者你可以提出另一个技巧吗?它会一样快吗?谢谢.
这就是我不喜欢的原因!x:
if (25 == a->function1(12345, 6789) &&
45 == b->function1(12345, 6789) &&
!c->someOtherFunction(123)) { ... }
Run Code Online (Sandbox Code Playgroud)
以下似乎更好:
if (25 == a->function1(12345, 6789) &&
45 == b->function1(12345, 6789) &&
false == c->someOtherFunction(123)) { ... }
Run Code Online (Sandbox Code Playgroud) c++ compiler-construction optimization coding-style code-readability
coding-style ×10
c++ ×3
class ×2
java ×2
api ×1
c ×1
c# ×1
camelcasing ×1
conventions ×1
fxcop ×1
import ×1
list ×1
optimization ×1
php ×1
pyjamas ×1
python ×1