To refactor or not to refactor? (Part I)

Andrey Akinshin

I like refactoring. No, I love refactoring. No, not even like this. I awfully love refactoring.

I hate bad code and bad architecture. I feel quite creepy when I design a new feature and the near-by class contains absolute mess. I just can’t look at the sadly-looking variables. Sometimes before falling asleep I close my eyes and imagine what could be improved in the project. Sometimes I wake up at 3:00AM and go to my computer to improve something. I want to have not just code, but a masterpiece that is pleasant to look at, that is pleasant to work with at any stage of the project.
If you just a little bit share my feelings we have something to talk about. The matter is that over some time something inside me began to hint that it’s a bad idea to refactor all code, everywhere and all the time. Understand me correctly – code should be good (even better when it’s ideal), but in real life it’s not reasonable to improve code instantly. I formed some rules about the refactoring timeliness. If I am itching to improve something, I look at these rules and think “Is that the moment when I need to refactor the code?” So, let’s talk about when refactoring is necessary and when it’s inappropriate.
  Read the rest of this entry »

September 10th, 2014

Reliable multi-platform reporting component for the most complicated reporting challenges.

Ekaterina Nebogina

Development of professional and stable business software is a real challenge for developers. It’s also time and resource consuming. To save time and money developers prefer to use universal development frameworks and packages including grids, charts, calendars, tree views, textboxes, menus and other tools including reporting components. Such packages cover most development tasks. But when it comes to more complicated and specific issues they seem to be not flexible enough to address them.
silverlight, wpf and winrt report viewers
Perpetuum Software focused on a flagship reporting component to make it a good fit even for the most challenging reporting tasks. SharpShooter Reports has 12+ years of successful history full of happy customers from multinational corporations to freelancers who value company reliability and loyalty to developers’ productivity and success. Read the rest of this entry »

August 6th, 2014

Mobi DB 2.0 – Android Databases Have Never Been So Easy to Manage!

Ekaterina Nebogina

Perpetuum Software announces a new version of Mobi DB which is a comprehensive database management tool for Android devices. It is now packed with new powerful features that make it possible to create complex relational databases and efficiently organize data.

Very often people need to store not only flat data in a single table (for example, DVD list, personal wine collection, etc.), but also some bigger data that should be kept in a database with many tables that are somehow related to each other. Now Mobi DB can handle this task. Adding tables is done with a single tap: users can select from the list of pre-set templates or create a new one. Convenient visual designer will help setting up the form: add, remove, and locate fields to make entries look fine.
  Read the rest of this entry »

July 24th, 2014

About System.Drawing.Color and operator ==

Andrey Akinshin

Operator == that allows easy comparison of your objects is overridden for many standard structures in .NET. Unfortunately, not every developer really knows what is actually compared when working with this wonderful operator. This brief blog post will show the comparison logic based on a sample of System.Drawing.Color. What do you think the following code will get:

var redName = Color.Red;
var redArgb = Color.FromArgb(255, 255, 0, 0);    
Console.WriteLine(redName == redArgb);

“It’s red here and it’s red there. Probably, the objects should be equal”, the reader might think. Let’s open source code and review the operator ==: Read the rest of this entry »

July 3rd, 2014