Bad Practice to Store Calculated Data in Database?
If computers were infinitely fast, then, No, you would never store a value that could be calculated from other columns in the database. Storing calculated values is a violation of database normalization. 

Examples would include: 


The extended cost on an invoice line that carries price and quantity fields.
The total cost of an invoice’s lines. 


In the real world, we do sometimes choose to violate normalization. The motivation is usually for performance reasons. Never do so without much thought, and hopefully a consultation with another DBA or database developer. And always document thoroughly your decision and its specific motivation. 


  is there a general rule of thumb?


Yes: Normalize, and test/profile. 

Always start with a normalized design. Load with fake data, test performance. Verify any discovered bottleneck is indeed due to your on-the-fly calculations.