我在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行代码.问题是 - 这是否值得一个新文件?
似乎Django没有关于模板文件放置的约定.什么是最合乎逻辑的首选展示位置?
(由于Django强调应用程序的互操作性,我认为"最佳"位置可能会在某处/app/;也许/app/templates/?)
我过去一直在使用矢量,我对它们非常熟悉.我听说ArrayLists更快更灵活.我是使用ArrayLists和Java Generics的新手.我目前正在使用它们如下并接收有关参数化的警告(我认为我通过声明它们来做到了这一点<String>.
ArrayList<String> arrayList = new ArrayList <String> ();
...
//then within a method
arrayList.add(file.getName()); //<-This line triggers the warning.
Run Code Online (Sandbox Code Playgroud)
我在网上发现,可以通过抑制方法中的警告来避免这种情况,如下所示.但是,这是一个解决方法,我宁愿了解arraylists如何正常工作和使用它们,而不是禁止警告错误地使用它们.
@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)
并且,如果有关于使用ArrayLists的某种约定或标准,我也很想了解这些.
编辑: 我收到的警告如下:类型安全:方法add(Object)属于原始类型ArrayList.应该参数化对泛型类型ArrayList的引用
在一些示例代码中,有一些方法和类在其他方法和/或类中声明.
我从来没有听过/读过这个.这种编程有什么影响?在一个单独的文件和方法中并排写下类而不是彼此之间(就像每本书都告诉你的那样)不是更好吗?这种编程有哪些优点和缺点?
这是我的意思的一个例子:
Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
TextView textView = (TextView) findViewById(R.id.description);
textView.setText(mRoad.mName + " " + mRoad.mDescription);
MapOverlay mapOverlay = new MapOverlay(mRoad, mapView);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
};
Run Code Online (Sandbox Code Playgroud) 我有100个类,它们扩展了一个抽象类.
这些类中的50个将需要具有该方法foo(),该方法在每个类之间变化.
我知道有两种方法可以做到这一点:
Option #1:创建一个单方法interface用foo(),并且implement这interface在类50.
Option #2:将abstract方法标题添加foo()到父类,并将foo()方法留空50个类.
以下哪项是更好的约定?为什么?或者有没有更好的方式我没有想到?
请帮助理解这三个import语句的区别是什么,以及它们执行时在底层发生了什么.
>>import lxml
>>import lxml.html
>>from lxml import html
Run Code Online (Sandbox Code Playgroud)
我理解第一次导入将导致整个lxml模块在当前范围内可用.
第三个导入只导致范围内的html子模块可用.
那么中/秒导入的最终效果是什么?如果它与其他两个中的任何一个具有相似的效果那么哪个是最恐怖的方式,为什么要用两种方法来达到同样的效果呢?
谢谢
每当我需要定义一个自定义异常时,如果它的消息不会根据上下文而改变,我将消息放在该异常中.像这样:
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException() {
super("User with given name is not found!");
}
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) {
super(message);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,每次抛出此异常时我都不需要提供消息,我知道消息在每个地方都应该是相同的.
你觉得我的方法有问题吗?你更喜欢哪一个,为什么?
java exception-handling exception conventions custom-exceptions
我在 git 上的提交消息通常如下所示:
* Fix bug abc
* Refactor xyz
* Document 123
* ...
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是一种不好的做法,我应该更喜欢单行提交消息或至少提供一个标题行。
另一方面,这写起来不太舒服......
你有什么建议?
我已经建立了一个可插入系统,该系统可以从系统环境中检索没有等效设置器的数字值。
例如:
此接口指定检索器的合同
public interface ValueRetriever
{
double retrieveValue();
}
Run Code Online (Sandbox Code Playgroud)
这是两个实现:
public class TotalMemoryRetriever implements ValueRetriever
{
@Override
public double retrieveValue()
{
return Runtime.getRuntime().totalMemory();
}
}
public class FreeMemoryRetriever implements ValueRetriever
{
@Override
public double retrieveValue()
{
return Runtime.getRuntime().freeMemory();
}
}
Run Code Online (Sandbox Code Playgroud)
其他可能性是返回系统负载,可用磁盘空间等。
我已经建立了另一个层,该层可以为检索到的值计算不同时间范围内的移动平均值,这就是为什么有一个用于检索的接口很有用的原因。这使我可以通过“插入”每个特定的检索器将移动平均机制与许多“检索器”实现一起使用。
为此,我选择了“猎犬”一词,但我认为可能会有一个更好的词或更好的方法来做到这一点。我在这里可以使用最佳实践还是其他惯例?
我正在学习条件,并想知道这对于类似情况是否是一个不好的约定。我应该在不使用 isEven() 的情况下定义 isOdd() 吗?
static boolean isEven(int i) {
return i % 2 == 0;
}
static boolean isOdd(int i) {
return !isEven(i);
}
Run Code Online (Sandbox Code Playgroud) conventions ×10
java ×7
class ×3
abstraction ×1
arraylist ×1
coding-style ×1
django ×1
exception ×1
getter ×1
git ×1
git-commit ×1
import ×1
interface ×1
naming ×1
oop ×1
python ×1
standards ×1
warnings ×1