最近我开始将越来越多的函数放入头文件中,主要是为了方便起见.但我担心我可能会过度使用它,我的标题充满了包含,我不确定这是不是一个好主意.
将函数移出头文件或将其移入头文件有哪些经验法则?
如果你想知道,我说的是开发应用程序,而不是库.
编辑:
我想从我的角度概述内联(自然)头函数与实现函数的优缺点是有帮助的:
专业内联:
反对内联:
根据这一点,将几乎所有函数放在头文件中似乎是一个好主意,我相信这与STL和Boost正在做的非常接近(尽管这些是库,而不是我的代码).
我正试图BitmapDrawable
在自定义视图中移动.它的工作正常ShapeDrawable
如下:
public class MyView extends View {
private Drawable image;
public MyView() {
image = new ShapeDrawable(new RectShape());
image.setBounds(0, 0, 100, 100);
((ShapeDrawable) image).getPaint().setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas) {
image.draw(canvas);
}
public void move(int x, int y) {
Rect bounds = image.getBounds();
bounds.left += x;
bounds.right += x;
bounds.top += y;
bounds.bottom += y;
invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用a BitmapDrawable
,drawable的边界会发生变化,onDraw
则会调用该方法,但图像会保留在屏幕上的位置.
以下构造函数将通过创建BitmapDrawable来重现该问题:
public MyView() {
image = getResources().getDrawable(R.drawable.image);
image.setBounds(0, 0, 100, 100);
} …
Run Code Online (Sandbox Code Playgroud) 我正在用Microsoft Visual Studio 2010 Express编写一些C++,我想知道是否有办法在IDE中的某个地方显示命令输出而不是外部控制台窗口,或者至少保持该窗口打开.
从STDIN读取内容适用于控制台应用程序,但这是一个单元测试用例,我不想修改生成的main函数.还有另外一种方法吗?
c++ console unit-testing visual-studio-2010 visual-studio-express
有人可以向我解释一下vi和curses程序管理图形输出的程度如何?他们可以改变屏幕上的个别角色,还是他们必须文学清晰并在任何变化时重绘屏幕?
如果有人能够在没有所有样板代码的情况下将一个较小的克隆组合在一起,那将是非常巧妙的.
我正在尝试使用libzip和FreeType直接从ZIP存档加载TTF文件.
特别是,我正在使用FT_Open_Face函数,该函数可以读取自定义读取/关闭函数(ft_zip_read
和ft_zip_close
).但是,虽然文件显然已完全读取,但FT_Open_Face
返回FT_Err_Unknown_File_Format
.直接从磁盘打开相同的文件工作正常.
我真的不知道如何调试这个,有人可以帮忙吗?
我现在唯一能想到的问题就是我的ft_zip_read
功能不支持搜索,文档说:
可以调用此函数以执行"计数"为0的搜索或跳过操作.非零返回值则表示错误.
它确实被调用了0次,但我看不出用libzip进行搜索的任何方法.
unsigned long ft_zip_read(FT_Stream stream, unsigned long offset,
unsigned char* buffer, unsigned long count)
{
zip_file* file = static_cast<zip_file*>(stream->descriptor.pointer);
return zip_fread(file, buffer + offset, count);
}
void ft_zip_close(FT_Stream stream)
{
zip_file* file = static_cast<zip_file*>(stream->descriptor.pointer);
zip_fclose(file);
}
FT_Face load_zipped_face(const std::string& name, unsigned int size,
const std::string& zip_path)
{
FT_Library library;
FT_Error error = FT_Init_FreeType(&library);
if (error)
throw freetype_error_string("Failed …
Run Code Online (Sandbox Code Playgroud) 我一直在寻找Cheat Engine,它允许你检查和操作Windows上正在运行的进程的内存:你根据它们的值扫描变量,然后你可以修改它们,例如在游戏中作弊.
为了编写机器人或类似的东西,您需要为要更改的变量找到一个静态地址 - 即在重新启动进程时保持相同的地址.方法大致如下:
从我看过的教程来看似乎工作得很好,但我很难理解为什么它有效.
难道所有变量(包括全局静态变量)都不会在运行时获得相当随机的地址吗?
奖金问题:
我想将自己的对话框完全绘制成自定义视图.我可以以这样的方式显示它,使其显示在所有其他视图之上,并且所有触摸事件(甚至是对话框区域之外的事件)都会重定向到对话框吗?
组织Web内容的最常用方法是什么,即HTML,JS和CSS?
我通常在小项目中这样做:
我认为这是相当标准的.但是,对于具有多个HTML/JS文件的项目,您如何做到这一点?我的方法是:
这是一种常见的做法吗?即使只有一个文件,我应该将CSS移动到单独的"css"目录吗?这个中央CSS文件通常如何调用?"style.css"或"base.css"还是其他什么?将HTML文件移动到单独的目录是否常见?
我需要less
从我的 Java 控制台应用程序执行带有分页的命令。但是,我发现执行外部命令的唯一方法是Runtime.getRuntime().exec()
,这要求我通过流写入/读取输入/输出。所以像cat
work这样的命令(less
实际上确实像cat
),但我需要分页功能。
在 C 中,我会使用system()
. 在 Ruby 中,Kernel.exec完成了这项工作。
有没有办法在Java中完成这项工作?
我正在研究一个简化版本如下的类:
class Http_server {
public:
void start(int port)
{
start_server();
std::string content_type = extract_content_type(get_request());
}
private:
void start_server()
{
...
}
std::string get_request()
{
...
}
std::string extract_content_type(const std::string& request) const
{
...
}
};
Run Code Online (Sandbox Code Playgroud)
现在我想写一个测试用例extract_content_type
.问题是:它是私有的,所以我不能从外面调用它.我可以测试的唯一功能是start
,但是那个实际上会启动server(start_server
)并等待request(get_request
).
我怎么看,我有三个选择:
extract_content_type
公众extract_content_type
到实用程序类或命名空间start_server
和get_request
虚拟和创建一个覆盖他们模仿对象我不想公开任何内容或移动到一个只在一个类中使用过一次的实用程序命名空间,所以最不好的选择是选项3.
我在V8代码库中至少看到过一个这样的例子:http: //code.google.com/p/v8/source/browse/trunk/test/cctest/test-date.cc
不过,我不确定这是不是一个好主意.virtual
由于两个原因,它不是C++中的默认值:
你会怎么做?与无用的虚拟生活在一起?或者根本不测试功能?我不是TDD,也不想成为TDD,但是开发像extract_content_type
测试这样的函数更容易.