关于函数有一个try-catch的东西,我认为有时可能非常有用:
bool function()
try
{
//do something
}
catch(exception_type & t)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
所以问题的第一部分:这种风格在一般情况下是否被认为是不好的?
我使用这种方法的具体例子:
我们在c和c ++中有很多代码的项目.我们有自定义异常类型(不是std :: exception派生的).我需要集成XML库并将所有异常强制转换为我们的类型.所以,基本上,最后一步是从XML库中捕获所有异常并转换它们.
功能之前:
bool readEntity(...)
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
Run Code Online (Sandbox Code Playgroud)
后:
bool readEntity(...)
try
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
catch(XMLBaseException & ex)
{
//create our exception and throw
}
Run Code Online (Sandbox Code Playgroud)
我的想法是这样的:我明确表示我的意图将从一种类型派生的所有异常转换为自定义类型并且我们保持我们的屏幕没有水平滚动条(因为水平滚动条是坏的).
好吧,在代码审查期间,我对这种方法的批评非常明确.
所以我想听听你的想法.
更新:要明确:重构函数不是一个选项.实际上它写得很好.
我目前正在尝试编写类似于互联网上其他类似的自定义图像裁剪系统,用户可以选择裁剪区域,然后相应地裁剪图像.该应用程序位于Rails中,我们将Paperclip与Amazon S3一起使用来存储文件.虽然让RMagick从S3适当裁剪文件,但我遇到了很多麻烦.这是当前代码(不起作用):
if params[:width].to_i > 0 and params[:height].to_i > 0 then
photo = Photo.find(params[:id])
image_data = Net::HTTP.get_response(URI.parse(photo.photo.url(:big))).body
orig_img = Magick::ImageList.new
orig_img.from_blob(image_data)
args = [params[:x1].to_i, params[:y1].to_i, params[:width].to_i, params[:height].to_i]
orig_img.crop!(*args)
photo.update_attributes({:photo => orig_img.to_blob})
photo.photo.reprocess!
photo.save
end
Run Code Online (Sandbox Code Playgroud)
主要问题是裁剪后的图像没有通过回形针上传回S3,因此没有正确裁剪.之前有没有人用回形针尝试这样的东西?这可能是不可能的,但任何帮助将不胜感激.
只是想知道关于从指示状态的方法返回枚举的一般共识是什么.返回码(整数)的概念是在旧校园系统编程(C)天生漂亮,但如果用于指示状态的方法已经改变了我想知道.
谢谢
编辑:我知道枚举基本上是int值.我询问(是其中枚举或整数),表示完全状态的方法有左右开始状态代码投掷纯粹的做法.这似乎是一个很好的做法,但我想知道这个想法是否有任何负面情绪.
我总是会选择枚举而不是int返回状态代码.
我有一个文件中定义我的Rails项目的类lib目录,将实施一批实用功能类方法.我想编写使用测试::单位对这些方法的测试,并让它们运行作为该项目的定期检测程序的一部分.
我试着在testdir 的顶层粘贴一个文件...
require 'test_helper'
class UtilsTest < ActiveSupport::TestCase
should 'be true' do
assert false
end
end
Run Code Online (Sandbox Code Playgroud)
......但那没用.测试没有运行.
测试代码的正常方法是什么,而不是Rails的常规部分之一?
我想隐藏Dock图标并显示一个NSStatusItem.我可以创建StatusItem但我不知道如何从Dock中删除图标.: - /
有任何想法吗?
我正在尝试创建一个指针数组.这些指针将指向我创建的Student对象.我该怎么做?我现在拥有的是:
Student * db = new Student[5];
Run Code Online (Sandbox Code Playgroud)
但是该数组中的每个元素都是学生对象,而不是指向学生对象的指针.谢谢.
暂时不管使用isinstance是否有害,在尝试通过Pickle序列化/反序列化对象后尝试评估isinstance时,我遇到了以下难题:
from __future__ import with_statement
import pickle
# Simple class definition
class myclass(object):
def __init__(self, data):
self.data = data
# Create an instance of the class
x = myclass(100)
# Pickle the instance to a file
with open("c:\\pickletest.dat", "wb") as f:
pickle.dump(x, f)
# Replace class with exact same definition
class myclass(object):
def __init__(self, data):
self.data = data
# Read an object from the pickled file
with open("c:\\pickletest.dat", "rb") as f:
x2 = pickle.load(f)
# The class names …Run Code Online (Sandbox Code Playgroud) 所以我有一个tile image tile.png,我正试图在整个窗口创建一个平铺的地图.我正在将其构建为applet.这是我的绘画方法看起来像,但它没有效果.当我运行小程序时,它需要大约2秒钟,整个屏幕从左到右绘制图像,而不是一次渲染.此外,它看起来像一个大的tile.png而不是tile.png的40个小实例
public void paint(Graphics g)
{
Image tile=getImg("tile.png");
int width=this.getWidth();
int height=this.getHeight();
int x;
int y;
for (x=0; x<= width; x++)
{
for (y=0; y<= height; y++)
{
g.drawImage(tile, x, y, this);
}
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,tile.png文件是10 x 10像素,这是实际的img:
tile.png http://img12.imageshack.us/img12/1368/tile.png
编辑:使用下面的代码并通过改进平铺图像我修复了这个.这是我的新瓷砖img,以防它帮助某人:
我知道如何注册dll但是我从来没有真正确定我为什么要这样做,或者在什么条件下必须注册dll.有人可以向我解释或指出一些文件吗?
我打算使用无共享架构和多版本并发控制来创建分布式数据库系统.冗余将通过异步复制实现(只要系统中的数据保持一致,就可以在发生故障时丢失一些最近的更改).对于每个数据库条目,一个节点具有主副本(仅该节点具有对其的写访问权),此外,一个或多个节点具有该条目的辅助副本以用于可伸缩性和冗余目的(辅助副本是只读的) .更新条目的主副本时,它会加上时间戳并异步发送到具有辅助副本的节点,以便最终获得最新版本的条目.具有主副本的节点可以随时更改 - 如果另一个节点需要写入该条目,它将请求主副本的当前所有者为该节点提供该条目的主副本的所有权,
最近我一直在考虑当集群中的节点发生故障时该怎么做,以及用于故障转移的策略.这是一些问题.我希望你能知道至少其中一些的可用替代品.
c++ ×2
ruby ×2
2d ×1
algorithm ×1
amazon-s3 ×1
arrays ×1
c# ×1
cocoa ×1
coding-style ×1
com ×1
database ×1
distributed ×1
dll ×1
dock ×1
enums ×1
exception ×1
failover ×1
icons ×1
java ×1
lsuielement ×1
macos ×1
maps ×1
paperclip ×1
pickle ×1
pointers ×1
python ×1
testing ×1
unit-testing ×1
windows ×1