相关疑难解决方法(0)

为什么省略花括号被认为是一种不好的做法?

为什么每个人都告诉我编写这样的代码是一种不好的做法?

if (foo)
    Bar();

//or

for(int i = 0 i < count; i++)
    Bar(i);
Run Code Online (Sandbox Code Playgroud)

省略花括号的最大理由是它有时可以是它们的两倍.例如,下面是一些为C#中的标签绘制发光效果的代码.

using (Brush br = new SolidBrush(Color.FromArgb(15, GlowColor)))
{
    for (int x = 0; x <= GlowAmount; x++)
    {
        for (int y = 0; y <= GlowAmount; y++)
        {
            g.DrawString(Text, this.Font, br, new Point(IconOffset + x, y));
        }
     }
 }
 //versus
using (Brush br = new SolidBrush(Color.FromArgb(15, GlowColor)))
    for (int x = 0; x <= GlowAmount; x++)
        for (int y = 0; y <= GlowAmount; y++) …
Run Code Online (Sandbox Code Playgroud)

c c# c++ java coding-style

177
推荐指数
29
解决办法
5万
查看次数

一个有点痛苦的三重嵌套三元运算符

我查看了Raphael.js源代码,了解他如何将RGB值转换为HSB.我发现了他所做的功能,当我碰到这个漂亮的三嵌套三元运算符时,我正在将它转换为Python:

H = (C == 0 ? null :
    V == r ? (g - b) / C :
    V == g ? (b - r) / C + 2 :
             (r - g) / C + 4
    );
Run Code Online (Sandbox Code Playgroud)

它引发了我一个循环,因为Python没有Javascript所做的那种三元运算符.我花了一段时间查看它并最终将这个有点理智的代码(仅使用if/else)从中删除:

if (C == 0) {
    H = null;
} else {
    if(V == r) {
        H = (g - b) / C;
    } else {
        if(V == g) {
            H = (b - r) / C + 2; …
Run Code Online (Sandbox Code Playgroud)

javascript if-statement ternary-operator

24
推荐指数
5
解决办法
4万
查看次数

让一位同事相信他们是否没有被嵌套

今年开始编程的我的一位大学同事有时写下这样的陈述:

if(something) doA();
else
    if(something2) doC();
    else doD();
Run Code Online (Sandbox Code Playgroud)

他被认为第二if-else对被视为单个实体,并且它实际上嵌套在第一对之下else.

但是,我确信他的代码相当于:

if(something) doA();
else if(something2) doC();
else doD();
Run Code Online (Sandbox Code Playgroud)

这表明第二个else实际上并不是嵌套的,而是与第一个if相同的级别.我告诉他,他需要用花括号来达到他想要的效果.

"但我的代码按预期工作!"

事实上,它按预期工作.事实证明代码的行为是相同的,即使else没有嵌套.

令人惊讶的是,我发现自己无法写出一个清晰简洁的例子,显示出不同的行为

if(something) doA();
else
    if(something2) doC();
    else doD();
Run Code Online (Sandbox Code Playgroud)

if(something) doA();
else {
    if(something2) doC();
    else doD();
}
Run Code Online (Sandbox Code Playgroud)

你能帮我找一个例子,告诉我的同事使用/不使用花括号之间的区别吗?

或者,就行为而言,看起来不正确的版本总是等同于花括号的版本?

c c++ if-statement nested

7
推荐指数
2
解决办法
303
查看次数

C++ 中初始化列表之后的大括号放置

对于任何这样放置大括号的人:

void f() {
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

您更喜欢如何在长初始化列表之后放置大括号?
一样的方法?

Object::Object()
    : foo(1)
    , bar(2) {
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

或者例外,这样你就可以真正看到初始化列表的结束位置?

Object::Object()
    : foo(1)
    , bar(2)
{
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

或者留一个空行?

Object::Object()
    : foo(1)
    , bar(2) {

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

或者也许制作一个奇怪的混合体?

Object::Object()
    : foo(1)
    , bar(2)
    {
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

或者滥用缩进

Object::Object()
: foo(1)
, bar(2) {
    stuff();
}

Object::Object() : foo(1)
                            , bar(2) {
    stuff();
}
Run Code Online (Sandbox Code Playgroud)

在这个小例子中,一切都很漂亮,但是启动了十几个初始化程序和一个中等长度的函数体,这很快就会发生变化。

coding-style

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

非常简单的Java语法错误

所以我试图创建一个非常简单的程序来练习一些基本的Java格式化技巧.然而,关于"fight()"的一些事情正在让我的编译器疯狂.谁知道为什么?提前感谢我收到的任何答案,代码如下:

class Hero{
    String name;
    int Intelligence;
    boolean parents;

    public static fight(Hero1, Hero2){
    if(Hero1.Intelligence>Hero2.Intelligence){
        return(Hero1.name+" is the winner");
    else
        return(Hero2.name+" is the winner");
        }
    }
}



class HeroMain{
    public static void main(String[] args){
    Hero Superman = new Hero();
    Superman.name = "Superman";
    Superman.Intelligence = 7;
    Superman.parents = false;

    Hero Batman = new Hero();
    Batman.name = "Batman";
    Batman.Intelligence = 8;
    Batman.parents = false;

    public fight(Superman, Batman);
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods

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

如果没有程序错误,不确定有什么问题?

我是java的新手,试图从这本书中学习一门课程并且我坚持制作一个程序.如果没有错误并且无法找到标记为guessdigit1&2的符号,请继续告诉我.

当我将鼠标悬停在符号旁边的错误对话框上时,它一直说guessdigit1和2是他们自己的类.任何的想法?谢谢!

package loterry;

import java.util.Scanner;

public class Loterry {
// This program creates two random numbers, and checks to see if your guess
    // makes the lottery win

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter in your guess for loterry, two digits please");
        int lottery = (int)(Math.random()*100 /50);
        int guess = input.nextInt();
        int lotterydigit1= lottery /10;
        int lotterydigit2= lottery %10;

        // Get digits from guess
        int guessdigit1 = guess / 10;
        int guessdigit2 = …
Run Code Online (Sandbox Code Playgroud)

java

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

最大化窗口并在 wpf 中恢复正常

嗨,我想在 WPF 中最大化窗口,我使用以下几行:

private void mnu_maximize_Click(object sender, RoutedEventArgs e)
{
    if (main.WindowState == System.Windows.WindowState.Maximized)
        main.WindowState = System.Windows.WindowState.Normal;
    main.WindowState = System.Windows.WindowState.Maximized;

}
Run Code Online (Sandbox Code Playgroud)

但问题是当我再次单击以将恢复窗口恢复到正常状态时,它无法正常工作并且处于最大化状态。
那么我该如何解决这个问题?

c# wpf

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

标签 统计

java ×3

c ×2

c# ×2

c++ ×2

coding-style ×2

if-statement ×2

javascript ×1

methods ×1

nested ×1

ternary-operator ×1

wpf ×1